Yeah, 3-4 hours is an awful long time...
Here's what I do (and someone's probably going to hop in and point out something wrong about it, but it's worked thus far):
Pre-boil some water and put it away to chill - I actually pre-boiled about 2 gallons, then put them into sanitized 1 gallon jugs and put them in the freezer just before I started my brew. Gave them plenty of time to get really cold, but not actually freeze.
Once my boil was complete, I took my pot (which had a little more than 4 gallons of hot wort), and placed it into my utility sink and filled up the sink with cold water, until the water level in the sink was roughly as high as the water level in the pot.
The entire time I was filling the sink, I stirred the contents of the pot in one direction and the cold water in the other direction. By the time the water got to my desired level (after about 5 minutes), the temperature was down 50 or 60 degrees.
I then emptied the sink and repeated the exact same exercise, dropping the temp about another 50 or 60 degrees.
I then emptied the sink again, but this time I dumped a couple bags of ice into the sink and 1 gallon of the now very chilled pre-boiled water right into the kettle. I then filled the sink with water again and resumed stirring pot and sink in opposite directions.
This way, the wort chilled to pitching temperature in roughly 15 minutes (I hit 74F). I definitely had to be very cautious not to let any water directly from the tap to get into the wort, and ditto for the ice, but this wasn't super difficult.
Now, I do understand that stirring the wort as much as I did when it was still hot may risk what I think is called hot-side-aeration. Thing is, I've done this for several batches now and not noticed any of the cardboardy flavors people associate with aeration and oxidation, so I don't think it's hurt my beer at all.