Creating connections is (relatively) a very slow process, so you should avoid creating them every time you want to check a message (it's an anti-pattern creating a connection every time).
Also your call to session.close() is redundant since you're calling conn.close() which will close the session too.
Yes, that was the problem. I am using the JBoss Messenging within a Portlet so I set the TopicConnection into the PortletSession and now reuse it over and over within that session.
Also, I have changed the code so that less callback servers wil be created. This means we will be able to support more concurrent open jms connections on the client side.
This will be available in RC3