I can tell you the most likely reason, without even bothering to look. It's the orientation of the 'normal' of the object attached to the path. And, depending on the shape and use of your path, can be easy and quick to solve.
Basically, what's happened is that part of your curve is 'twisted' about its axis of travel. This can be overcome in a number of ways....
Hopefully, all you have to do is mod the motion path control itself. Occasionally, changing the way the motionPath handles the object's orientation to the path will solve your problem.
Second thing you could try to do is make your object 'aim' at something above it (or to the side, wherever). Unfortunately, this depends heavily on the shape of your path, and can even make the object following the path 'slide' sideways, relatively to the path direction.
Third is to create a number of expressions which control its angle. While effective, you have to search for the exact moment that it starts to flip. That hunt can be less than effecient, depending on how much time you put into the hunt.
Fourth, you can modify either the control curve. This can also be difficult, largely for the reasons mentioned above.
Anyways, besides these four methods, there's probably at least a couple of others, some better, some worse.