I didn’t really look through your project all that much, so I’m just giving you some general advice.
For starters, don’t use materials for collision detection, use properties, via a collision sensor. Materials are not all that usefull right now, because gamespace objects can’t seem to properly manage collisions between two different materials assigned to the same mesh.
When I said bounding box, I meant a static ghost mesh defining a collision surface (for determining collision from dynamic objects).
Also, to check weather or not the cart has flipped over, you might want to use a ray sensor empty parented to the top of the cart. The ground being a static object, it won’t detect collisions from any other static object, so you can’t use a parented bounding box in that case, and seeing how multiple materials on one mesh can’t be properly detected, I’d say the ray sensor is the best way to go.
I hope some of that can help.