Во-первых, нет необходимости иметь скрытый элемент управления PictureBox, просто вы можете использовать его свойство Image для хранения изображения. Просто создайте объекты Image.
Вы можете хранить изображения в словаре, индексируемом по имени:
var cards = new Dictionary<string, Image>() {
{ "diamonds", Image.FromFile("diamonds.jpg") }
{ "clubs", Image.FromFile("clubs.jpg") }
//...
};
Тогда вместо этого:
if ( player.card[0] == "diamonds" ) { pb_playerCard1.Image = pb_diamonds.Image; }
Вы бы написали:
pb_playerCard1.Image = images[player.card[0]];
Этот код все еще не очень хорош (каждый раз, когда вы видите переменные, такие как foo1, foo2, foo3, вы должны помещать их в массив, чтобы их можно было индексировать по номеру). Следующим шагом может быть рефакторинг кода, чтобы у вас было что-то вроде:
pb_playerCard[0].Image = images[player.card[0]];
Или:
pb_playerCard[0].Image = player.card[0].Image;