El TAdoConnection, tiene una opción "coAsyncConnect", podrías hacer algo como:
Código Delphi
[-]
begin
ADOConnection.ConnectOptions := coAsyncConnect;
ADOConnection.Open;
FCancel := False;
repeat
Application.ProcessMessages;
if FCancel then
begin
ADOConnection.Cancel;
Break;
end;
until not (stConnecting in ADOConnection.State);
end;
Saludos!