About the best you yourself can do is set the Recovery Interval to be a bit lower (one minute, or so), but this will have an effect of lowering performance on your system overall. Lowering the Recovery Interval will increase the number of checkpoints that SQL Server is issuing.
After that, you have to try to be sure that you are not restarting the SQL Server service midway through a large transaction. An old rule of thumb was that it took SQL Server almost twice as long to back oout of a transaction as it took to get this far through. So, if you have been waiting staring at Query Analyzer for 20 minutes, you may have to wait up to 40 minutes after you hit "cancel query". Same could apply to restarting the SQL Service. Have you poked around to see if there are any extra-long/piggish transactions that someone may have put in a "begin/commit transaction"?