I took a peek at how this was handled with the new WinRT and based on other opinions here, and finally settled on doing it like this:
[Serializable]
public delegate void TypedEventHandler(
TSender sender,
TEventArgs e
) where TEventArgs : EventArgs;
This seems to be the best way forward considering the use of the name TypedEventHandler in WinRT.