High Performance Blocking Queue C#
This question has a number of misconceptions  


You are unlikely to develop a real-time system using .NET because of
unbounded GC times  
ConcurrentQueue&lt;T&gt; is better than BlockingCollection&lt;T&gt; not because
it does not use locks. It actually uses more locks, just in a
smarter way.  
ConcurrentQueue&lt;T&gt; provides worse API exactly because it is faster. 
Most of the missing APIs are missing because there is no way of 
implementing them efficiently and in a thread-safe manner


Your code has a number of weaknesses:


I don't see any reasonable use for IsAddingCompleted and friends
I am not sure there are no race conditions. For example, lets assume we have produced == consumed == 0. Thread1 adds an item and is just before incrementing produced. Thread2 calls TryDequeue, since produced==consumed, it goes through and stops right before changing sleeping. Thread1 continues, changes produced to 1, checks if sleeping is 0, which it is and quits without setting the event. Thread2 continues to Wait(). Now we have a task and an eteranlly-waiting client.
There is no way to abort a waiting TryDequeue and finish gracefully