PostgreSQL distingue entre mayúsculas y minúsculas, esto podría ser un problema aquí DISTINCT ON puede usarse para búsquedas que no distinguen entre mayúsculas y minúsculas (probado en 7.4)
SELECT DISTINCT ON (upper(name)) name FROM names ORDER BY upper(name);