I still cringe when my children say “on accident” but I do not correct them… Barratt’s study is dead on, is my personal experience.
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.