Вы постоянно создаете новые строки, а не используете старые.
Переместить линию
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
внутри блока if, end переместить все остальное, что есть в блоке if вне его, кроме строк
mySwitch *switchView = [[mySwitch alloc] initWithFrame:CGRectZero];
cell.accessoryView = switchView;
Вам нужно создать переключатель только один раз для строки, когда она инициализируется (это означает, что в операторе if). Я предлагаю вам создать его и назначить ему тег, чтобы вы могли получить к нему доступ позже по его тегу. Ваш код теперь создает новый переключатель каждый раз, когда используется ячейка, это может быть причиной того, что переключатели ведут себя таким образом.