tilequant is an tile-based image quantization tool mostly aimed at GBA/NDS development.
Processing isn't very fast, but does give good results. This is mostly due to processing in YCoCg space, combined with vector quantization.
Each of the RGBA channels may have a specified bit depth for the output palette (useful, for example, for RGB565 or other 'uneven' - or even custom - variations), and dithering (using the Floyd-Steinberg algorithm) is also possible.
Source code may be found on the GitHub page. The executable available here quantizes to GBA/NDS-style RGBA5551.
tilequant is released under the Unlicense license.