Mutual mistrust between buyer and seller needs to be supported. This is the toughest problem. Right now, sending Bitcoins is not tied to receiving something in return, and is irrevocable.
Use a trust network to ensure the people you're trading with are already trustworthy. Use an escrow or arbitration service to protect yourself from disputes. One doesn't exist? Sounds like an opportunity for profit.
The double-spending check system has to be as least as fast as normal credit card processing. Waiting minutes for the block chain to update is unacceptable.
Use a centralized payment processor for large value instant transactions. Accept payment without confirmations (listening for double spends for a short time) for small value items.
Some price stability is needed. Value shouldn't change more than 1% per week, worst case. 1% per month would be better.
Stability comes with volume. Arbitrarily fixing exchange rates does not work.
A better way of launching the currency needs to be developed.
What?
There's an approach to mutual mistrust that might work. First, as with credit cards, there's a need for an "authorize" and a "capture" stage. In the "authorize" stage, A indicates that they intend to send value to B. This locks up the value from other use by A, and B receives a reliable confirmation that A has that value. In the "capture" stage, the value is actually transferred to B. A has to authorize the "capture".
How do you know that the block in which the authorization resides is not going to get rewritten by a double spending attack? You have to wait for the same number of blocks in either case...