I know current phones do not have hardware supports for NFC and SD card, but what prevents them from running Internet Explorer 10? Is there no way to port the NT kernel to the current phones?
Unfortunately the current crop of Windows Phones cannot handle the NT Kernel which Windows Phone 8 is built on. This would require new processors and processing languages.
First, the new OS requires different hardware. Not just an NFC chip, or SD card support, but different architecture on the hardware. They could have built support for this in, but at what cost?
Second, I imagine it has to do with the laughably terrible upgrade history the phone has. The carriers are still blocking updates, and Microsoft can't really do anything about it. Let's pretend for a minute they did decide to make the new OS run on current devices. When they pushed the update out it might take months for the carriers to approve the update. It might never even happen! Microsoft would have taken the hit on that one as they did on every other update.
It has to to with technical reasons, and I'm sure it has to do with some business reasons as well. I'm sure it boils down to cost vs gain. I can't speculate on what Microsoft would/wouldn't get from upgrading current phones, but it would be costly.
I believe the main reason is actually due to Windows Phone 7 devices not having the required security chip which gives each device a unique ID and prevents unauthorised software from being run.
The Lumia 520 has a relatively weak ARMv7 CPU (albeit dual-core), 512 MB RAM, no front-facing camera nor NFC, so the hardware is actually quite similar to other ARMv7 devices like the Lumia 800/900.