Unfortunately, I think leaks will be a continuing source of complaints, especially as the code base gets into to more applications. Making an uninitialize method available (which could be called from global object destructors) that releases resources and restores each and every static back to null would seem to be an eventual requirement.
If the state was driven all the way back to load, then any calls after uninitialize (or the destructor) would reload the resources and then leave them dangling. However, I would think this has to be a rare situation and a tolerable behavior. Not the most pressing issue, but one that will eventually need to be addressed.
