Sadly, my feeble
brain can't fully comprehend how HAM
works, but I'll have a go at explaining it, plus I do know of some more instances of its use.
HAM is generally implemented by drawing alternate scanlines with different palettes, and then switching around the palettes on the next frame (I think). So, this effectively doubles the number of colours that are drawn to the screen (albeit in an interlaced form, and presumably with a performance hit). But the benefits don't stop there - because the percieved colour for each pixel will now be the combination of two colours from the machine's total colorspace, thanks to the the wonders of optics, the visible palette is not doubled, but squared. (Think of how a full colour image can be created by overlaying three pieces of red, green and blue coloured film.) (yerricde informs me that the effective palette will be more limited than I have stated above because attempting to combine pairs of very diverse colours will result in noticeable flicker.)
Recent Game Boy Color games use HAM, although often in static cutscenes, as the screen and processing power of the machine is not brilliant. Shadow of The Beast on the Amiga used HAM, as did Eternal Champions on the Sega Mega Drive. Sonic 2 uses a variation of HAM to generate the "pseudo hi-res" split-screen two player mode. All the Sonic games use a similar trick to allow levels to show an above- and under-water section with different palettes (drawing the area above water with one palette, and then switching to an alternate palette at the point in the frame where the conveniently-horizontal waterline is hit).
HAM is a major headache for emulator writers, as the code used to implement it gives no indication of the (hardware-reliant) desired effect, plus I guess you'd have to emulate right down to the signal coming out of the machine. KGEN98 seems to have the option to emulate this successfully.