How can I narrow down the cause of a deadlock after the fact?
When the timeouts occur, do you see any blocking?  You can run sp_who2 to determine that.  It sounds like you are having intermittent performance issues.  You need to look at your wait types to see if there is a bottleneck.  Activity Monitor will show you the top resource waits.  The waits will help you determine where to focus your attention.  Check the SQL Errorlog, System &amp; Application event log for any dumps or entries that provide clues into what is happening.