"It will take a few decades more before the majority wisen up to the fact that receiving an email from a perfect stranger is NOT normal and most often NOT wanted. Meanwhile, botnets will flourish."
Um ..... Suppose, just hypothetically for a minute, that no two computers in the world had the same instruction set and addressing schema. In other words, a binary program compiled to run on one computer could never run on any other computer.
Now the only two ways to make *your* computer run a program are (1) to have it compiled for *your* computer, or (2) to have it supplied in Source Code form and run through an interpreter.
If that wouldn't stop the propagation of viruses, worms and Trojans dead, I don't know what would. The only way a program (malicious or otherwise) could be made generic enough to run on *any* computer would be to supply it in Source Code form; and then any competent programmer would be able to see what it was doing and stamp it out.
As a beneficial side effect, it would also make piracy impossible. You buy a piece of software, and it's personalised specifically to your computer; no matter how many times you copy it, it won't run on anyone else's computer. If you scrap your old computer, you can show the certificate from the approved recycling centre and receive a discount on a copy of the same software personalised to your new computer. (So there's another beneficial side effect: it prevents e-littering.)
And this doesn't hurt the Free Software movement, either; because if you download a program in Source Code form, then you can easily compile it for your own computer.
The technical problems are: how to achieve this kind of full personalisation in the first place (some kind of CPU-instruction-level crypto?), and how to bootstrap an initial build environment (the Source Code for a compiler isn't much good by itself). I'm confident, though, that they are not insurmountable.