Having big concentrations of specialized hardware makes it much harder to attack using large botnets.
So that's the problem with a proof-of-work suitable for PCs.
The problem is government agencies who can afford to make a custom ASIC and then fill a whole building with them.
And this is the problem with the current proof-of-work suitable for ASICs (and GPUs).
The solution is to alternate between the two and maintain two independent difficulty targets, one for even blocks (PCs) and one for odd blocks (GPUs). Anyone wanting to take over the network would have to be able to generate both types of work.
Even better would be having an altruistically useful proof of work like protein folding or finding Mersenne primes so we could even have people supporting bitcoin incidentally, even though their primary motivation was folding proteins or finding large primes.
A useful proof-of-work would have to have the properties enumerated in the following post
http://bitcointalk.org/index.php?topic=203.msg3669#msg3669ByteCoin
Alternating is a good idea.
Or perhaps one could find a system where different types of work can exist side by side.
Nodes could be free to choose if they wanted the added security or not.