Birefringence (double refraction) is the cause of these colours. The effects are similar to those seen in airplane windows and in transparent plastic objects reflecting the polarised light of computer monitors.
There are several stages:
(1) The light from an overcast sky is not polarised or only very weakly so.
(2) Rays enter the ice.
(3) When there is an air layer beneath the the ice slab, some rays are reflected back upwards from the lower ice-air interface surface. These rays are linearly polarised. The extent of polarisation depends on the viewing angle and is maximum at the ‘Brewster angle’. Here, Dieter chose a position where the polarization was strong.
(4) At this stage the ice birefringence becomes important. It splits the upcoming rays into two components – an O (ordinary) ray and E (extraordinary) ray. The extraordinary ray was so named because its refraction is not predictable by Snell’s law.
(5) The rays pass through the polarising filter on the camera and interfere to produce the colours.
The colours change when the camera polarising filter is rotated. This is a key to identifying whether birefringence is responsible. Colours might also be generated by thin film interference in cracks and gaps between ice sheets but these would not change in hue (they do in intensity) when a filter is rotated.
The birefringence of ice influences halos slightly and a sundog has two differently polarised components. These can be separated if you work quickly with a polarizing filter before the dog changes shape. Richard Fleet has a good set of images.
It is good practice to keep a polarising filter with you even if it is not used on a camera. A piece of Polaroid or a lens from some old sunglasses will do. Try it on reflections from ice, water, rainbows and fogbows, and if you are airborne a glory.
Thanks to Dieter Zawischa for very helpful discussions. Visit his site describing origins of colour in Nature..