I think it's simply self-preservation. If they don't get reelected, they lose their job. Few people want that. Would you lose your job over your views on issues like gun control? May you would, but a lot (maybe majority) of people wouldn't. Look at the stories of people in former communist countries. Majority of them didn't want to even risk their jobs over much, much more serious issues than gun control, NSA, or abortion.
Bureaucrats don't want to lose ther jobs. But for elected politicians the job is to do what they said for a specified term. If doing their job properly means losing it, then maybe the incentives are all wrong. We already have term limits for presidents, what about senators and congresspeople?