Extension methods for ReaderWriterLockSlim
It looks pretty good. I can't see anything less than great.
I'd just add that to your code:

    private static void Critical(Action criticalAction)
    {
        try
        {
            Thread.BeginCriticalRegion();
            criticalAction();
        }
        finally
        {
            Thread.EndCriticalRegion();
        }
    }


And i used the IsWriteLockHeld, IsReadLockHeld, etc, before exiting the lock.