My favorite theory is a purely technical one. I don't have much supporting evidence beyond the linked site though:
"""In summary, quotes from NYSE began to queue, but because they were time stamped after exiting the queue, the delay was undetectable to systems processing those quotes. The delay was small enough to cause the NYSE bid to be just slightly higher than the lowest offer price from competing exchanges. This caused sell order flow to route to NYSE -- thus removing any buying power that existed on other exchanges. When these sell orders arrived at NYSE, the actual bid price was lower because new lower quotes were still waiting to exit a queue for dissemination."""
Original report: http://www.nanex.net/20100506/FlashCrashAnalysis_Intro.html More news from the same company: http://www.nanex.net/FlashCrash/FlashCrashAnalysis.html
In addition to the crash itself, they also have interesting charts from various algorithms behaving strangely.