I’ve gone straight to Grammar Girl for help on this one. Hearing or reading the words “on accident” makes me grit my teeth, but here’s a well-rounded argument:
According to Barratt’s study, use of the two different versions appears to be distributed by age. Whereas on accident is common in people under 35, almost no one over 40 says on accident. Most older people say by accident. It’s really amazing: the study says that “on is more prevalent under age 10, both on and by are common between the ages of 10 and 35, and by is overwhelmingly preferred by those over 35.” I definitely prefer by accident.
An interesting conclusion from the paper is that although there are some hypotheses, nobody really knows why younger people all over the U.S. started saying on accident instead of by accident. For example, there’s the idea that on accident is parallel to on purpose, but nobody has proven that children all across the country started speaking differently from their parents because they were seeking parallelism. Although I have no proof, I suspect that it must have something to do with nationwide media since it is such a widespread age-related phenomenon. Barney & Friends started airing about 30 years ago, so maybe it’s Barney’s fault! But really, all we can say is that it’s just one of those language things that happens sometimes.
Finally, although there is at least one source stating that on accident is an error (2), and Shelly from Texas asked me to do what I can to ban on accident, Barratt found that there is no widespread stigma associated with saying on accident. In addition, it seems to me that as those kids who say on accident grow up (some of whom are even unaware that by accident is an option, let alone the preferred phrase of grown-ups) on accident will become the main, accepted phrase. By that time, there won’t be enough of us who say by accident left to correct them!