I believe that for calls to Control.BeginInvoke you're okay, but for
everything else you really *shold* call EndInvoke - you may indeed end
up with a leak otherwise.
Someone on the CLR or C# mailing list had a nifty delegate wrapper
which you could use to make it easier though...