I use some UserControls which get created and destroyed within my application during runtime (by creating and closing subwindows with these controls inside).
It
Is PPMM something external with a longer lifetime that the MyControl instances?
If so, unless PPMM_FactorChanged is a static method, the ppmmEventHandler will be keeping a reference to the MyControl instance live - which means the instance will never be eligible for garbage collection, and the finalizer will never fire.
You shouldn't need to keep the ppmmEventHandler around for the removal code.