You've mentioned it a couple of times but I don't know what sense you're using it in. Please explain what you mean by "cold storage" and how it is made public in a way that stops it being stolen.
What I mean by cold storage is using offline addresses.
Typically, the minimum possible is left on the server to reduce the consequences of a theft, should the server ever be compromised.
It requires monitoring to either send excess funds to cold storage, or reload the server if the amount of withdrawals largely exceeds the amount of deposits.
When your cold storage address is public, you cannot lie about getting hacked in order to steal user funds for yourself.
You can only lie about a hack and steal the funds that are in the hot wallet.
The same way, in the JS wallet model, an operator can claim having been hacked in order to steal a percentage of the funds using client-side code poisoning.
In both cases, a rogue operator can steal a percentage of the funds by claiming that a hack occurred.
There's not much need for cold storage with a JS wallet as all the private keys are encrypted anyway. If the servers are compromised the hacker still can't spend coins.
On StrongCoin a hacker has about a 1 minute window to change the JS before it's detected and I get an SMS. In that time the probability of a payment going through is not large. They would be lucky to catch 1 password.
So that leaves the owners as the biggest risk, however that risk is far less then the old style e-wallets because we would be held accountable. We wouldn't be able claim that someone hacked the site, it would obviously be us.
So I think hybrid e-wallets are the safest and most convenient way to store your coins.