I'm also fighting with locking now :).
It's possible to change locking to optimistic. To do so you shall change locking-policy in your conatiner-configuration (standardjboss.xml). Possible values are JDBCOptimisticLocking, NoLock, SimpleEjbReadWrite and Pessimistic (I might have typoed the exact names - take a look in classes in package org.jboss.plugins.lock in jboss.jar).
To use optimistic locking you must also define strategy for it (search forum for 'optimistic locking' for details).
But all the above did not solve my deadlock problems :(. I switched to a different containter-configuration (the one using EntityMultiInstanceInterceptor). The problem is that this interceptor does seem to ignore caching :( at least on my jboss.
Hope this helped :)