ja, du musst ihn wieder abmelden. Der Lambdaausdruck ist ja nur syntactic sugar, um anonyme Methoden zu inlinen, aus dem Grund musst Du Dir den Lambda auch als delegate merken, um ihn dann wieder abmelden zu können.
Auf jeden Fall in den Coding Guidelines festlegen, dass EventHandler nicht mit Lambdas im Stil eines "connect-and-forget" festgelegt werden dürfen. Das kann schnell zu hässlichen MemoryLeaks führen.
ergänzend zu ffordermaiers Antwort: anonyme Methoden werden als statische Methode compiliert und somit würde die Referenz bis zum Entladen der AppDoamin (i.d.R. bis zum Ende der Anwendung) gehalten und dann kann das eben zu den Speicher-Leaks führen wenn das Objekt das den Handler erstellt schon vorher freigegeben werden könnte.
@ffordermaier: der Begriff "inlinen" ist etwas ungünstig gewählt, denn darunter versteht man eine Compiler-Optimierung (die in .net der JITer dürchführen kann). Die Entscheidung ob eine Methode geinlined wird od. nicht basiert auf einer Heuristik und nicht zwangsläufig jede anonyme Methode muss geinlined werden. Allerdings wird das von dir gezeigte Bsp. ziemlich sicher geinlined.
Noch ein Nachtrag. Anonyme Methoden werden nur dann als statische Methoden kompiliert, wenn sie über keine Variable schließen (also kein Closure bilden). Closures werden vom Compiler in nicht-statische Klassen transformiert.