The only problem is that it doesn't work. It looks like something else has grabbed a reference to the underlying IStorage and the associated IPropertySetStorage.
Figuring out what did this is just a wee bit challenging since there's no way to directly observe the reference counts in the debugger. The only way to get a reference count on a COM object is to AddRef and Release it, each of which will return the current reference count. And that trick doesn't work if you used a smart COM pointer, because you aren't allowed to AddRef and Release those directly, so you have to create a new reference to the IStorage and AddRef/Release it to get the overall reference count.
At the moment, I am extremely annoyed and getting ready to add a lot of instrumentation to this mess so I can sort it out.
*grumble*
In other news, Katie asked me to send you a message: :)