There's a couple of reasons I don't have to prepare much for the games I run. Much of it comes down to the fact that I've already done it all in advance or are taking advantage of the players arguing amongst themselves:
Maps: I have an entire binder of dungeon maps just waiting to be used. I wrote these up a couple of years ago--maybe 50 of them, and they haven't run out (I've even reused many of them with great results--restocking the maps on the fly, of course). There are also many maps to be found on the internet. Personally, I enjoy making and using my own. I often draw maps for fun, without any real purpose and intent, and stick them in my DMing binder.
During the game, I stock the rooms semi-on-the-fly. By that, I mean I usually have a decent idea of what any particular dungeon/map is going to be like beforehand. I've found that I tend to make very similar choices whether I'm stocking when prepping the game or two minutes before the party enters a room.
Yes, your right, while the party talking amongst themselves about what to do next, I's populating my dungeons.
To do so, I using a mix and random tables and whenever comes into my head based on what I know about the dungeon. As the process goes on, a usually end up with a very clear idea of what the dungeon is and is current and previous purpose in the game world. By that time, I generally stop using random tables altogether: instead I close my eyes and envision what comes next.
At any given time, I try to stay about two or three rooms ahead of the party in any given direction, otherwise they might feel like their choices don't matters. As many of you know, making sure that player choice is the determining factor in success and/or failure is a big deal to me.
Tables: I love tables. Like maps, I make them for fun. Unlike maps, I also love grabbing them from the internet. I have anywhere from 10 to 20 tables in my referee notebook at any one time. After a couple of months when many of the interesting possibilities have been used up, I'll swap a table out for another one in order to keep things fresh. During the game, I'm nearly always rolling dice on various tables, looking for inspiration, and sometimes using ideas whole cloth. The best table I've found is Risus Monkey's Dungeon Words!, which I find myself using just about every single session.
For example, my entire last session was inspired by a table of 50 prophecies I found on someone's blog (sadly, I forget which), although I think it may have been the Underworld Kingdom. Here is the result that came up: "The priests words are poison," or something similar.
From there I created a primitive society where the priests and elder vied for political power. The session resolved around how the priests dealt with the random appearance and demands of local slavers (who the party was already familiar with). The priests took disreputable men during their confessions and tried them up in the basement of the temple, keeping them there to appease the slavers in preparation for their next visit (otherwise, they'd level or raid the town). The priests believed themselves to be ridding the village of its scum. The village elder had gotten wind that the priests being involved in several disappearance. Believing they were selling their captives to the slavers for their own gain, she asked the PCs check it out.
Campaign Q&A: At the beginning of a campaign, I take a good 10 minutes to explain the basic concepts of the world to my players. I don't go into a ton of detail, but give them the basic stokes I've painted. After that, I open it up to a group-wide Q&A and will answer ANY question they ask, usually creating the answer on the fly. By the end, I have a very clear idea of what the world is like and which aspects of it my players are most interested in.