I must admit, I used to wonder the same thing. Admittedly, I rarely go to Vegas, since I live in San Jose, but I went a few times a year, and didn't get much in the way of comps. I was able to get a few bucks off a lunch or something, but nothing like a free room. The closest thing I got was when I tried out a "Poker Room Rate" deal at the Excalibur a few years back. It was OK, but not a super-great deal (it made the $60 room be more like $30), and I had to play something like five hours per day in the room. That was unexpectedly difficult at the time, since Excalibur was having trouble keeping lots of games running continuously at the time. I made it, but it wasn't simple, and I found the whole experience tiring instead of relaxing and fun.
I have some friends who get comped rooms, meals, the works, several times a year. But they're high-rollers who think nothing of dropping a grand in an evening's entertainment. So I thought that was the reason they got comped everything. Now I'm not so sure.
A few years back, in one of my trips to Vegas, I signed up for the Station Casinos "Boarding Pass" card. I earned a buck or two in comps, but mainly I did it for the free swag at sign up. I don't remember what it was, a T-shirt or something, but I figured what the heck. This past March, I went back to Vegas and stayed at Boulder Station (probably now my favorite casino to stay at, even though the poker there is a bit odd). I happened to slide my card through a little kiosk thing that told me I had something like 200 points on the card. I only needed 300 more points in order to make "Gold Card" status, which earned me permanent discounts on food and stuff. Then, they also had a coupon - if I earn 400 points during the day, I win a free lunch at the buffet. I like their buffet, so I decided to try it. And through experimentation I found out the trick: you have to play slots or video poker.
Playing table games (like blackjack) earns you a few points an hour, but not much -- and it doesn't get tabulated and entered into the system until a day or two later. Ditto for poker - the point accrual is slo-o-o-ow. But slots and video poker rack up the points quickly and immediately. At Station Casinos, you get 1 point for every dollar gambled. So if you play a $1 video poker game for one hand, you get one point. Well, a video poker hand takes only a couple seconds, so if you want to earn 100 points, it only take five minutes or so. Just keep hitting the "deal" button.
I learned a few tricks to video poker which make the house edge fairly small, so although it's a loser's game, it's not much of one (the payout is something like 99%, as I understand it). And besides, it's kinda fun and doesn't take long. In about 30 minutes, I had racked up 500 points and won $20. I went and cashed in, ate my free buffet, and then did the whole thing again the next day. The next day, I lost $10 while playing the video poker, racked up 500 points, and went to the buffet again. Then I went home.
Ever since then, I've been getting regular offers in the mail: "Come stay for free!" And since I also did play a single video poker machine at Green Valley Ranch while waiting for a poker tournament to start, now I get regular offers from them, too - no free rooms yet, but heavily discounted rooms.
I took Boulder up on one of the free room deals for the 4th of July weekend, and ended up staying Thu, Fri, Sat, and Sun nights for free. I gambled there to pay them back, won about $20, got a couple free buffets, and once again left having paid only about $20 for the entire vacation. I fully expect to get more free room deals over the next few months.
So that's my secret tip: play video poker, earn a few hundred points, and they'll shower you with free rooms and other great deals.