I wrote a tiny bit of processing.org (apparently it now supports Python!) to "pointify" images. The sketch allows for the user to define and limit the palette by picking individual colors off of the original image. You can also change the point sizes interactively. When in palette mode, the simple algorithm finds the closest 2 colors off of the palette and picks one randomly, this forces more diversity of colors in a section of the image.