This patch causes Blender to scale preview icon resolution based on display's pixel size (as tested on my retina Mac).
I'm working on an add-on to support custom icons via 0-user image datablocks. It also adjusts the resolution for display in ID-menu templates (as visible in Texture properties).
Blender will cache a HI-DPI scaled icon image using factor from 'U.pixelsize' for interface panels zoomed to their largest size (which is 64x64 texels on 2x DPI).
The drawback of this method is the icon position appears to be translated by about (2,2) points ((4,4) pixels at 2x). There must be a sensible place to adjust this transformation, but I'm still figuring out this part of the codebase.