Location, Location, Location.
I find key is to ensure the Distribution database is located on its own physical disk or LUN (for SAN). This ensures the IO needs of the LogReader Writer Thread or the Distribution Agent Reader Thread are not waiting behind IO needs of other queries for user databases.
To learn more about LogReader Reader/Writer threads see my posting on ReplTalk.
http://blogs.msdn.com/repltalk/archive/2010/02/21/transactional-replication-conversations.aspx
--Chris Skorlinski
--Microsoft SQL Server Replication Escalation Services