Мне не понятно, почему у вас там блок if. Разве вы не можете инициализировать оба изображения состояний как одноразовый шаг инициализации? * 1001 Т.е. *
[sender setImage:[UIImage imageNamed:@"first.png"] forState:UIControlStateNormal];
[sender setImage:[UIImage imageNamed:@"second.png"] forState:UIControlStateSelected];
Фактически, это, вероятно, можно сделать в Интерфейсном Разработчике, если вам не нужно делать это программно.