Hola, lo que se me ocurre es que incouyas un modulo en tu proyecto para que manejes una variable publica de tipo boolena y con ello sepas si está o no abierto el formulario.
Por ejemplo.. tenemos el form1 que tiene un boton que abre el form2 y en mi módulo tengo mi variable que se llama wOpen que me controlará si se abre o no..
form1.vb
Cita: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Not wOpen Then
Dim f As New Form2
f.Show()
End If
End Sub
y en el form2 pones en falso wOpen para que no se esté abriendo nuevamente.
form2.vb
Cita: Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
´tu código....
....
...
wOpen = True
End Sub
y no olvides ponerla de nuevo en false en tu evento closed para que posteriormente lo puedas vovler a abrir...
Cita: Private Sub Form1_
Closed (ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
wOpen = False
End Sub
Espero que haya sido claro con éste ejemplo.
Saludos y suerte