You don't need photoshop...but you do need a program that allows you to 'layer' an image. The idea being that you create two layers (two copies of the image)...the top one is converted to B&W. Then you just erase the parts of the top layer, that you want the color to show through.
Another method would be to just convert an image to B&W and color in the parts you want...although this is more of an artistic endeavor.
If you don't want to spend the money on Photoshop, try out The Gimp. It was built to look like Photoshop and work the same way in concept. The best part is that it's free.
Also, this link gives a nice step-by-step on how to do the selective coloring in The Gimp.