pues que uses el connectiontimeout está bien, pero lo que tendrías que hacer es verificar el estado de la conexión así no tenés que esperar por el timeout, para eso podés usar la propiedad state del objeto conexión de ado.
acá tenés un ejemplo de cómo implementar una conexión asíncrona en ado:
http://support.microsoft.com/default...d=kb;es;194960
espero que te sirva