¿A que te refieres con que no se descarga todo el programa, porque en el entorno de desarrollo ves que sigue ejecutandose?
Si es así se debe a que queda algún formulario cargado, fijate que debes usar Unload Nombre_Del_Formulario y no Nombre_Del_Formulario.Hide para ocultar los mismos.
En tu programa, asçi como está ahora, verás que si no presentas ningun otro formulario que el principal y luego lo cierras, ahi se cierra bien.
Bueno, eso es porque no hay ningún formulario cargado.
En cualquier momento que accedas a una propiedad o control contenido en un form, por ejemplo Form2.BackColor = vbRed, o Form2.Label1.Caption = "Prueba", el formulario se carga en memoria y luego debes descargarlo con la orden Unload.
Saludos,
Javier