just a heads up on something that is kind of obvious, but just in case: a blogger recommend delete-trailing-whitespace [in a tangling init, thus heavy org use]. many likely do this and whitespace-cleanup. he recommended it on a save hook.
the problem for org is if you have a header like "^****** $". deleting trailing whitespace will make those headers become text under the previous header. some people habitually do a sequential m-ret to create blank headers to fill in. this was recommended in an org tutorial or so. blank headers are likely to be created by accident. it is possible that this corruption occurs without the user knowing. especially using a save hook or when there are a lot of lines to fix.