Good tippers are out there, and for the most part you only have to not piss them off to get their sweet sweet tip monies. There are a few other factors to this, but since so many appear to have trouble getting tips in this land of service industry milk and honey, I thought I might give you some.... er..... tips.
Work for the right establishment. You might have to put in some time somewhere shitty when you're starting out, but keep applying to other places until you've found one that doesn't suck. Avoid anywhere that is dead most of the time, has terrible food or attracts the non-tipping variety of douchebags (sportsbar douchebags mainly) and don't fuck with a place that has some kind of policy that has you taking home fewer tips than you are personally given. If you work at a place with such a policy and it's working to your advantage, stay with it until it ceases to benefit you or a better job comes along.
Most likely if it's none of the above, you just provide bad service. People don't always realize when they're subpar, but it can be a matter of gaining some self-awareness and an attitude adjustment, or just learning to fucking hustle. Speed and attention to detail are absolutely essential in service, but you don't want to appear frantic, as it sets the tone that the restaurant isn't running smoothly. You want to seem friendly, efficient, and like you've got everything under control. Keep up that appearance and you should be raking in the money.