No sé si lo solucionará, pero prueba a llamar al método "ProcessMessages" del objeto Application: (lo estoy haciendo de memoria porque no tengo Delphi aquí, así que ojo, pero la idea es esta)
Código Delphi
[-]procedure TEsperar.Execute;
begin
Synchronize(Show); while not Terminated do
begin
Application.ProcessMessages;
end;
Synchronize(Hide); end;