The Supreme Court is to blame
Very true, absolutely 100% correct. But there is a reason why lobbyists' money makes a difference and it is not solely politicians. People are their own enemies. All politicians like to win elections to stay in power, some have truly altruistic motives, some to line their own pockets.
So, if a politician decides to go against the gun lobby, guess what would they do? They would spend millions of dollars on TV ads trying to convince people that Mr. XYZ is coming for your guns. Majority of people in US are so stupid that they believe this drivel and would vote the politician out. The politicians do not have that kind of money to counter these ads. No one wants to be voted out. So they start making compromises.
It is a vicious cycle and the root cause is that in US, the president gets to nominate the supreme court justices (at least few of them). Historically, the supreme court justices have always voted in tune with the president. Unless there is separation of politics and judicial system, unless the politicians can work without the fear of lobbyists, bad things will continue will happen.
Only people can change the system through their votes, but when the votes are swayed by a one minute TV ad, nothing will change. In any democratic system, people get what they choose.