Until the windows world is completely managed (never), .NET devs are going to have to get their heads wrapped around unmanaged resource cleanup. Here are some good resources to get you started:
In addition, has posted a pattern that avoids most of the complexity of the disposable pattern. For more, see his post.