Question: What purpose do protected or private (non-static) events in .NET really serve?

It seems like any private or protected event is more easily handled via a virtual method. I can (somewhat) see the need for this in static events, but not for normal events. 

Have you had a use case before that clearly demonstrates a need or advantage for a non-static protected or private event?

Answer: 
Nested types have access to the enclosing type's private and protected events. I've used this feature to notify child controls (the nested type) of state changes in the parent control (the enclosing type) in a Silverlight application.
Not only the current instance can access a private member. Other instances of the same type can too! This enables some scenarios where this access control may be useful.

I am thinking of a tree structure where all nodes inherit a certain type and a private/protected event allows to propagate leaf events to their parents. Since they are the same type, the parent can register to the child's private event. Yet any client of the tree structure cannot.

I can definitely see a use case in a directory like storage system where where each directory needs to propagate its last modified date to its parent for example.