The sad, simple fact is that you can't fix stupid. No matter how much you try to educate the end user, they don't seem to listen. If Joe Public wasn't so uneducated about it the problem would go away entirely.
We could fix all 7,000,000,000 people in existence, or we could just fix all 3 operating systems that anyone uses. Which is more practical?
The problem is that current OSes make it very easy to install software and give it full privileges, and very hard to install software and give it only limited privileges such that it can't cause you harm (in both Windows and *nix, you have to create a new user account for it, but Windows is worst because most programs can't even be installed unless you're running as administrator)
Reverse the difficulty, and malware relying on "user stupidity" would pretty much disappear.