A non-ECC memory is 64 bits (8byte) wide. An ECC memory is 72 bits wide. The other 8 bits are used to store a 'syndrome' word which is calculated by the system memory controller. This syndrome is used to verify that the other 64 bits in the memory access is correct. ECC at a minimum can detect all double bit errors and correct single bit errors. The performance penalty occurs when a write to memory occurs which doesnt involve all 64 bits of the memory width. In this case a read/modify/write cycle must occur which slows things down a bit. Caches help minimize this kind of write operations so the impact to system performance is small.
As to 'needing it'... I would expect that the percentage of consumer oriented systems that ship with ECC memory would be VERY small. Server/Workstation percentage would be very high. If you are running you business on a system then I would strongly consider ECC a requirement. If you are gaming, surfing or editing.... Who cares if it was WinME locking up or a memory hit.... I have ECC in my systems just because I could and it takes one more variable out of the list of 'what happened' when it crashes. If cost is an issue, I would spend my money on better video (or whatever).