y si no te gusta la idea de usar un Timer entonces usa la API: *SetTimer*, mira un ejemplo de como yo la usaria:
Código Delphi
[-]
procedure TimerFunc(phWnd, pMsg, pidEvent, pTime: Cardinal); stdcall;
begin
ShowMessage('Diablos! Esto se ha ejecutado en diez minutos.');
KillTimer(phWnd, pidEvent);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(Handle, 1, 10 * 1000 , @TimerFunc);
end;
que crees?!