Yo te recomiendo que pongas el codigo de logeo en una funcion o mejor aún, en una clase.
Mi segunda recomendación es que ese código también vaya entre un try/catch porque lo que comentas es dificil de evitar. Así almenos no se colgará la aplicación.
Otra opción es usar la libreria de Microsft:
http://msdn.microsoft.com/en-us/libr...ndp.50%29.aspx
Aquí tienes un tutorial sobre como usarla:
http://www.codeproject.com/Articles/...rprise-Library