Can you get a stack trace of the threads that are hanging when they are hanging?
Unix : kill -QUIT <jboss-pid>
Windows : CTRL+BREAK in DOS window (if any)
jmx-console (jboss 5 or 6) : "jboss.system" -> "type=ServerInfo" -> click on button for "listThreadDump"
JDK jstack : jstack [-F] -l <pid>
You could also try jconsole, jvisualvm or MBean java.lang.Threading ("java.lant:type=Threading") "dumpAllThreads()".
That might give a bit more insight as to what is going on here.