In simple few points:
1. Elephantes didn't have battle experience, it wasn't hard for Romans (who know's how to fight against them) to make therm turn back against Carthaginian army.
2. Hannibal's veterans were to far behind main battle line, and threre were to few of them.
3.Probably the most important was betrayal of one of Numidian chieftains (i don't remember name); Hannibal counted on his help.
It's only my opinion of course:).

Sorry for my english:p.