I generally use a large container filled with warm water, with a bit of dish-soap added. For normal dirtiness, I just stir them around a bit, and then fish them out with a colander, and spread them on a large towel to dry. Recently, however, I acquired a large lot of Lego from a smoker's home, and all the pieces thoroughly reeked. I used the same method, but let the pieces sit for almost 24 hours in the soapy water. When I rinsed and dried them, they only very, very faintly retained the smoky smell--unnoticeable if you're not looking for it. For extra dirty pieces, an old toothbrush works well, or if you're being very picky, a q-tip.
In the past, for extremely dirty lots, I've even added a small amount of bleach to the water, and noticed no adverse effects.
I make sure to thoroughly sift through my pieces before soaking them, though, to make certain that there are no stickered pieces or cloth in the batch. Recently, however, I discovered that I'd accidentally left a stickered wing to a Jedi Starfighter in the lot that I soaked for 24 hours. Remarkably, it appears to be no worse for the wear. The sticker was not wrinkled, and it still adhered well. I wouldn't recommend testing that out, though. Due to my nitpickiness, I also remove any large transparent pieces and all printed pieces, and wash those separately and more carefully, so as not to unnecessarily scratch them.
I've also heard that people have gotten good results putting the Lego into a cloth baggie and placing it on the top rack of a dishwasher, for the cycle. Having not tried this personally though, I can't attest to the merits of this method.
Whatever you do, though, don't put them in the clothes washing machine (or the dryer!)
Think twice. Post once.Constructum excellentia!