As Temporary queues exist as long client session exists, they cant be used in asynchronous messaging.
Sorry, this is completely untrue. The JMS QueueSession object has a createTemporaryQueue() method and in conjunction with the jmsReplyTo message header and MessageListener.onMessage() it enables asynchronous request/response processing.
These two articles are very helpful in getting this working correctly, and the first even points out the strengths and weaknesses of this approach:
http://onjava.com/pub/a/onjava/2007/04/10/designing-messaging-applications-with-temporary-queues.html
http://javaxcross.blogspot.com/2008/06/jms-sendreponse-implementation.html