I think everyone else has covered pretty much everything, I'd just like to add a few things.
Firstly, Hannibal's early victories were more-or-less purely psychological. The biggest loss to Rome was the deaths of so many experienced senatorial commanders, but that may have been a good thing in the long-run, since the overconfidence of these elder generals was a big factor in the defeats at Trebia and Cannae already. Hannibal was one of the greatest military minds of antiquity, and a general his equal wouldn't really be seen until Sulla comes on the scene in a century. But that brilliance (coupled with the element of surprise) was really the only reason he had so much success. A lesser general would have been smashed by the Romans much earlier, and he wasn't able to control significant parts of Italy because the domestic support that Rome enjoyed was so overwhelming compared to any resistance among the socii. If we look at Rome's conquests, we see a constant use of the divide and rule strategy, not just in Gaul, but most notably in Greece. It took quite a few wars with wildly shifting alliances for Rome to really stamp out resistance in Greece, and I believe it would take something analogous for Carthage to exert any sort of comparable victory over Rome. Maybe if Hannibal's family had been given another century to establish a strong fiefdom in Spain, they would have been able to take Rome on their own, Carthage be damned, but imo, Hannibal was too hasty and his plan too bold for any meaningful results. He basically tried to blitzkrieg through Italy and use the psychological impact to turn the socii against Rome, but the Italians were too loyal (for the most part), so despite his tactical victories at Trebia, Lake Trasemine, and Cannae, the campaign was a strategic failure. It also didn't help that two of Rome's greatest generals to date, Scipio Africanus and Fabius Maximus, just happened to be at the heights of their careers at the same time as well.