In my opinion this idea violates three principles: (1) avoid premature optimization, (2) the principle of least surprise, and (3) too tightly coupling data with user interface.
It seems that you're optimizing for time, but how much time? If displaying the form in question is very time- or resource-intensive, then, yes, it's probably not a bad thing to do what you suggest. But generally speaking, the pattern of creating a window and destroying it when the user interface no longer requires it to be visible is a time-tested practice. Furthermore, when a window is not visible, it's still taking up memory. And if that window relies on things like file handles or database connections, that's a potential source of bugs.
The principle of least surprise means to do things in expected ways for all users of the system, including end-users, maintainers, and developers. The pattern you're describing is unusual, and therefore might cause more problems than it's worth.
Another reason to avoid this practice is that it violates the spirit of the widely-used Model-View-Controller design pattern, which separates the object itself from the task of displaying or modifying the object. There are very good reasons to use this design pattern, and even if you don't, the philosophy behind it is a good one. An object's existence is usually not dependent on some user interface object, and therefore should exist separately from the user interface. For instance, a Customer object exists whether or not a window is being displayed that pertains to that Customer. Coupling data too tightly to user interface objects often leads to brittle, hard-to-change code.
If you do decide to implement this, I'd advise against creating too many of these hide-able windows and try to keep them to a minimum, in which case Michael Buen's code seems to be an elegant solution to the problem.