I took the liberty of (briefly) researching a few other event systems:
Bukkit http://wiki.bukkit.org/Event_API_Reference
Events are delivered. Similar to my system, except uses reflection instead of TMP. Thus, the Listener interface is just a marker interface. It's nifty but a common mistake is forgetting to add the @EventHandler annotation to methods that handle events. Event class hierarchy is ignored - you have to manually call events for parent types if you want that behavior. Whether/how this actually happens for events called by the implementation is inconsistent, unfortunately, meaning you have to do lots of experimenting only to still not have every case covered.
SFML http://www.sfml-dev.org/tutorials/2.0/window-events.php
Events are polled. Single event class with a union for all possible event types. This avoids dealing with inheritance bunt introduces the problem of a god struct. For how few events there are however, I suppose it's fine for now, but it just seems so wrong to me.
Magnum
Events are delivered. No real event/listener class hierarchy, just classes with "Event" in their name as needed, and a member function to override to listen. This makes sense, since magnum is just a graphics library and you're expected to design your own (possibly event-driven) abstraction for your game/application.
JavaScript
Events are delivered. I would classify this as using lambdas, since you can use any arbitrary code per each event type and related HTML entity. This is actually a really neat side-effect of being embedded in web-pages, but not really applicable to other scenarios.
What else? Pros/cons?