I would use Photoshop.
Let me make a tutorial for you.
If you have many images I would recommend using Actions:
viewtopic.php?p=70480#p70480
Part 1
1. Find an image, I am going to use this old picture of me.
2. Select the "Quick Selection Tool"
3. and brush around the person you want to add the effect to (Photoshop will do most of the work)
4. Now go to Edit -> Fill...
5. Fill with black and click ok. (For another color, use the drop down menu and go to "color")
6. And you will get this quick silhouette effect.
Part 2 (Optional)
Sometimes you are using a more detailed image or you want a better result (soon)
7. Make a new selection (or undo to the old one)
8. Go to select -> Refine edge...
9. The background will turn white and you will only see what you selected. Also a refine edge window will popup.
10. Select view and go to "Black & White" or whatever color you want to work with (It will be the same in the end)
11. Play around with the settings and get a result you thing looks nice. (Don't worry about making mistakes)
12. If you want add or remove selection you can use the brushes available. (I am not using this in this tutorial)
13. After you click ok you will see 2 layers, the original and one with black and white. Hold "CTRL" and left click on the black and white one.
14. Now it will select again, it might look like the previous one but it isn't.
15. Now go to Edit -> Fill...
16. Fill with black and click ok. (For another color, use the drop down menu and go to "color")
17. And this is what you will end up with.
The last part of the tutorial is good for images with details like hair, or other things that are hard to select.
*Forgot to mention*
You can add any background of course
Here is an example of how much detail part 2 gets, quick and stunning results:
(You see how I didn't even have to select everything)
-RunarM