You can do all above with JBoss and JBossMQ, the JMS implementation of JBoss using CMT. I suggest you should use a late stable version of JBoss (or 3.2.2).
-comit sending transacted with SB
-acknowle receiving, comit sending and other transactional stuff with mdb (and SB involved if you want to)
-resending, concurrent access and all the rest is normal mdb behaviour or configuration
Depending on your configuration (persistent store for jms and other used datasources) you have to use xa transactions and you have to configure all resources enclosed in your transaction as managed resources in your deployment descriptors.
I have seen an example with the free JBoss doko some time ago with managed resources.