This is not completely true-- since only hashes of the public key are posted until funds are spent from an address
So what? Then the attacker waits till someone spents his funds and double spends them and gives the double spending transaction a high processing fee.
This can be fixed by a protocol addition, which can be implemented as long as there's warning. (First publish a hash of your transaction. Once that's been included in a block, publish the transaction. Namecoin already does something like this to prevent that exact attack.)
No, that won't work. Blocks are rejected if any transaction contained within is invalid (this is required for SPV modes of operation, and so isn't a requirement that can be dropped). Therefore a miner that works on a block containing transactions he didn't personally verify can be trivially DoS'd by the competition. They would have a very large incentive not to include your transaction.