In Gen VI, the easiest way to tell is that shiny Haunter has a blue inner mouth; normal Haunter has a red inner mouth.
Apart from that & the sparkles that appear at the beginning of battle, there's actually no way to tell shiny & normal Haunter apart; its body colour is exactly the same.

I couldn't find any X&Y sprites.