Here's how I do it 50% of the time, it seems like the long way 'round, but I find it more accurate and easier:
1. Roughly marquee around the area I want colored.
2. Copy and Paste Into a new layer.
3. Then, do Select > Color Range and select the color of the object.
4. Select Inverse.
5. Save Selection.
6. Merge layers down.
7. Load Selection.
8. Image > Hue & Saturation, turn the Master saturation all the way down.
I use this method about 25% of the time:
1. In CS2, enter quick mask mode.
2. Select an adequate brush size with the hardness/opacity turned all the way up.
3. Paint the object you want to keep colored with the brush.
4. Exit quick mask mode.
5. Desaturate.
Then this method occasionally:
1. Duplicate Layer.
2. Filter > Extract.
3. With a small brush size, paint around the edge of the colored object.
4. Fill with Paint bucket tool and Extract.
5. Select original layer and desaturate.
Only when those don't work will I use the lasso tool/desature inverse method.