Была ли строка отключением таймера внутри блока if или она выполнялась на каждой итерации цикла? Если бы это был я, я бы установил флаг, указывающий, что сообщение необходимо показать, а затем вышел из цикла. После цикла я бы проверил, нужно ли показывать сообщение, и если да, то и показать сообщение, и выключить таймер. Предположительно, таймер сбрасывается, когда элементы в списках изменяются, и проверка снова запускается.
Предостережение: я не программист на Delphi; Я говорю только в общих чертах о том, как бы я это структурировал. Если то, что я сказал, не имеет смысла с точки зрения Delphi, прокомментируйте, и я удалю свой ответ.