Just to put things in perspective, the time taken by a rollback depends on many things and is difficult to predict in precise terms. Improving the speed of rollbacks of large transactions and/or transactions as part of a large transaction log is an area of continuous improvement and fixes/enhancements continue to be made. Most of these happen deep down in the internals of the dataserver and rarely get any attention since there is little a customer can do with it.
What customers can do is run the command "kill <spid> with statusonly" for a session that is currently rolling back (<spid> is the number of the session that is currently doing the rollback, as shown by sp_who).
This particular form of the "kill" command will not actually kill the session, but it will report the estimated status of the rollback operation and from this you can get a rough idea how long it will take until completion of the rollback.
HTH,
Rob V.