Personally, I think that hardware wallets have the potential to solve this problem. Picture a device that contains your private key, and is capable of signing transactions (after you press a physical button). This thing could be designed such that it is physically incapable of leaking your private key via its USB port (or whatever). And maybe it has a little LCD screen that shows the transaction it's about to sign before you confirm. With something like that, there's really not a whole lot a bad guy could do to steal your Bitcoins.
Of course, if a bad guys does coax you into sending them Bitcoins via some more social-engineery-type means, that could be a problem. E.g. if they briefly took over a popular website and made it show their Bitcoin address rather than the real one, there wouldn't be a whole lot of recourse.