I have just added support for the asynchronous parts of the System.Messaging API for Mono, i.e. BeginPeek(), BeginReceive(), EndPeek(), EndReceive() and the associated events. There is a follow up patch waiting for review the ensures that exceptions are properly propagated back to the caller when EndPeek() or EndReceive() is called.
I have made support for these methods generic, i.e. it does not rely on the RabbitMQ implementation, thereby reducing the amount of work required to integrate another messaging implemenation. Just extend MessageQueueBase from the Mono.Messaging namespace.