Aquí ya se habló del tema
http://www.forosdelweb.com/f29/evitar-que-desde-boton-abra-varias-veces-mismo-form-337260/.
Para evitar el error que mencionas, aparte de la comprobación que haces (sobre la existencia de la referencia al formulario) debes comprobar con la propiedad IsDisposed que te indicará si el objeto está o no "marcado" para finalización...
Saludos