C# events are one of the least thought out features of the language. My recommendation is: never use them. If you accidentally add an event handler which has already been added, the default implementation will actually add the handler twice. This is a very hard bug to detect and troubleshoot. Also, if you accidentally remove an event handler which was never added, you get no error: it fails silently. Essentially, it is trolling you: it is telling you "yup, done!", fooling you into believing that your syllogism is correct, while in fact it is wrong. This is no way of developing software. I know many people all over the world develop software like that, and they somehow make do, all I can say is that I feel sorry for them. Don't do that to yourself.
Implement your own observer/observable pattern, asserting that nothing is added twice, and nothing is removed without first having been added. At the end of the lifetime of an observable object, assert that all observer lists are empty, meaning that all observers have bothered to unregister. Yes, garbage disposal was meant to be that magic bullet which would save us from having to worry about things like that, but well, guess what, it doesn't. Everything looks mighty fine when examining trivial examples and academic exercises on paper, but as soon as things start getting even a bit complicated, leaving things to be handled by magic just does not work anymore.
Once you have discovered that a certain observer is never unregistered from an observable object, you need to find out where the observer was allocated, and/or where it was registered. You can do that by obtaining the current stack trace and storing it within the observer, so that if the observer is later found to be alive, you can dump its stack trace. The way to obtain the stack trace is as follows: StackTrace stackTrace = new StackTrace();
Beware, this is extremely slow, (microsoft only knows why,) so use it only when it is actually needed, that is, while troubleshooting a specific class that you know has an error. Remove it as soon as the error is fixed.