Ahhh, my topic.
Ok so the theory that I and most scholars go by is this:
Hannibal wanted to start a war with Rome in part to regain Carthaginian national pride after the First Punic War, but also to either get rid of or get a better version of the treaty after the last war with Rome.
Hannibal knew that Rome would be able to defeat Carthage in a long war, Rome simply had too much man power to call upon. Thus the war needed to be short, and Hannibal needed to be devastating to Rome so that they could be scared into a surrender. I am of the opinion that Hannibal never intended to take Rome itself, only scare the Romans into a surrender.
So the Romans declare war on Carthage after the siege of Saguntum. Hannibal is in Spain with his army where he has been for much of his life. He needs to fight the Romans in Italy in order to keep the Romans from damaging Carthaginian territories (such as in the first war), and to provide maximum shock factor against Rome.
If we look at a map, the way most people would get from northern Spain to Italy swiftly and easily would be by sea. It would save having to cross two mountain ranges, numerous rivers, and the Celtic controlled lands in between. So why didn't Hannibal do this?
Firstly, transport for a large army (not to mention full of different nationailities and even elephants) is logistcally complicated and full of risks. This is also nearing winter, when the seas become more dangerous. Hannibal taking his army over the sea would be risky even if they never encountered any resistance from Rome.
But, Rome had naval supremacy after the first war. Once Hannibal left Spain most of the ports would be Roman controlled or Roman allied ports. Even if the Romans did not put a fleet out to block Hannibal, and he was able to get to Italy without having to stop on the way, as soon as he tried to land the Romans would be waiting. There was no way a naval expedition could have been successful for Hannibal at that time.
So what does this leave him? Land route, and that means he HAS to go through the alps.