Deadlocks cannot be avoided TOTALLY.
Your issue is that you have too many. I would say once a week is not too many. How many do you get a day?
Most important guidelines:
1. Transactions must be THIN and FAST - kind of Marathon runner who is a great sprinter
2. Well maintained indexes with fill-factor - avoid DELETEs (they destroy fill factor)
3. Definitely stored procedure - never direct queries!
4. Don't hit the same table twice! like A - B - A
5. Don't hit the tables in different sprocs like A - B & B - A, they should be the same order
Kalman Toth - Database, Data Warehouse & Business Intelligence Architect
BI Workshop NYC SSAS, SSIS, SSRS - April 21-24: http://www.sqlusa.com/order2005highperformance