Try to think about the fact that what you are doing doesn't effect just you. It is rude to all those people who have to wait for you. Why is their time less valuable than yours? Or in the case of a class, you are a distraction to all the other students, who are paying attention until the door opens, and then all eyes are on you. It is disrespectful to teachers, bosses, coworkers friends and family.
It is a pet peeve of mine, as my in laws are ALWAYS 30-40 minutes late. There have been times when they have walked into a party or celebration and found that we are already seated and eating our meals. I refuse to let the food get cold because they are so rude. The kicker is, they live 20 minutes away, so if they are 40 minutes late, they left their house 20 minutes AFTER they were supposed to be here!!!
Anyway, back on topic, I would say, if you like to sleep in (and I am a sleep lover too!), make sure you set everything up at night -- have the coffee-maker set up, ready to push the button, have your lunch made, your clothes pressed, wash your hair the night before, etc etc. That way, you can leave yourself a few minutes extra to sleep. Setting your alarm too early isn't good - the more times you think you can press the snooze, the less likely you'll be to just get up. Perhaps a second alarm across the room, set for the latest possible REASONABLE time, so you have to get out of the bed to turn it off.
I admit, when I was in my 20's, I had a bit of a problem being slightly tardy (5-10 minutes late 1-2 times a week), but I had a boss who really set me straight. She did me a favor by saying right out, "If you can get here at 10 past 9, you can get here at 9. If you are 10 minutes late once a week, it means you are leaving your house 15 minutes too late every day. Even if it's only 1 out of 5 times that the traffic is heavier, you need to leave earlier EVERY day. Don't let people look at you and think you are a slacker, just because you want to stay in bed for 10 more lousy minutes!"