Been there, done everything under the sun! :)
Our little guy is now almost 3, and we've just finally found a bedtime routine that works. The key was consistency (as another mom mentioned), and consistency is tough but totally worth it. We start the routine around the same time every night - about 6:30 he goes up for bath. We do bath every night because it helps him sleep better. After bath with Dad, he gets jammies on, picks out 3 stories and he & I settle into his beanbag to read. We usually read the same 3 stories every night, then we sing the same 3 songs. Yes, it gets old after awhile, but it's worth it! After I sing 3 songs, he gets to turn off his lamp, turn on the sleepy music on his CD player (I use Celine Dion's "Miracle" because he likes it) and I head downstairs. Dad checks on him after 10 minutes, I check on him 10 minutes later. Then he's on his own. Usually when I check on him, he's asleep.
Now, he's almost 3. When he was younger, we kind of had the same routine, but we checked on him more frequently. At 2 minutes, then 5 minutes, then 10 minutes. He rarely cried, but even if he did or still does, we wait until it's time to go up. He figured out that we would come up if he cried loud enough, so we finally just had to stick to our guns about when we checked on him. After a few weeks it started coming together. Now he puts himself to sleep on his own every night, and most nights he sleeps through the night in his own bed. He still comes down to our room anywhere between 2 & 5 am, but he's making progress.
Good luck, and stick with it! It's tough, but worth it!