How to perform server-side transaction timeout if COMMIT TRANSACTION will never arrive?
The underlying OS is capable of detecting all the above mentioned possible disconnects and break the communication channel (TCP, net pipe etc). This will result in the rollback. Don't try to outsmart this.

Of course, one could ask why not 


use a reliable queueing communication channel (eg. MSMQ)
submit the entire order in one call rather than 100 calls
commit the order line by line in 'pending' state


Any of the above would work. 30 second transactions would not work.