Por que double.NaN == double.NaN retorna false?

À primeira vista o programador poderia achar que a comparação acima resultaria em true, mas para surpresa da maioria (me incluindo) isso não ocorre.