По причинам памяти UITableView повторно использует ячейки при прокрутке (например, вызов dequeueReusableCellWithIdentifier).
Это означает, что полученная ячейка могла быть настроена в любом случае, которая является допустимой для использования с этим идентификатором, поэтому вы должны сбросить все эти свойства.
В вашем случае я подозреваю, что вам дают ячейку с изображением, которое было скрыто, так что это исправит:
NSDictionary *serverData = myData // previously defined.
if ([[serverData valueForKey:@"foo"] isEqualToString:@"0"])
cell.myImage.hidden = YES;
else
cell.myImage.hidden = NO;