Here some of the most common causes are:
* application timeouts caused by a long-running transaction
* incorrect error handling in TSQL or application code
* failure during trigger execution
* linked server failures resulting in orphaned distributed transactions
* no corresponding COMMIT/ROLLBACK statement to a BEGIN TRANSACTION command
Source:
* www.sqlservercentral.com/Books
Book : Troubleshooting SQL Server - A Guide for The Accidental DBA
By Jonathan Kehayias and Ted Krueger
Page 291-292