Заведите для каждого имиджа 3 состояния, Видимый,Невидимый,Выбраный
Код:
Type
TCellImageState = (isVisible,isHiden,isMarked);
и при клике на картинку/ячейку грида проверяйте состояние текущего имиджа.
1. Если Скрытый то сменить состояние на Видимый
1.1. Если ему есть пара среди видимых, то сменить его и его пары состояние на Выбраный.
1.2. Если нет пары то сменить его и его пары состояние на Скрытый.
2. Ничего не делать с теми у которых состояние Выбраный.
Наверное так.