What are all the ways an open transaction will rollback?
To add to what @RLF provided in his answer; the following will also result in transaction rollback.


ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE; will rollback any open transactions.
Disconnection by the client, or server, or any bit of infrastructure in between.
If the underlying disk subsystem goes away, all open connections to the database will be terminated. Uncommitted Transactions will be rolled-back when the database is subsequently opened.
If the server is shutdown, or quits for any reason, uncommitted transactions will be rolled back when it starts up and opens the associated database. 
If SET XACT_ABORT ON is set, any T-SQL statement that raises a run-time error will cause an open transaction to roll back.
Batch-scoped transactions, applicable to multiple active result sets (MARS), that have not been committed will roll back when a batch completes.
For completeness, ROLLBACK TRANSACTION will, rather obviously, roll back a transaction.
If the transaction log becomes full while a transaction is open, and the database is subsequently closed for any reason, roll-back will occur when the database is brought back online.
If SET IMPLICIT_TRANSACTIONS ON; is set, including by ANSI default, uncommitted transactions will be automatically rolled back when the client disconnects.