One potential obstacle to businesses accepting bitcoin is the variability of value of bitcoin against the fiat currencies those businesses have costs in. This makes it harder for businesses to plan, and would require frequent updating of prices based on latest market movements.
In the long term, as the Bitcoin economy grows, we could expect that the price will stabilise as trading volumes become larger and the price can't be moved around so much by single transactions anymore.
This led me to think that at the moment, bitcoin's most likely area of potential is donations. Bitcoin volatility is less of a problem for donations because most businesses/producers don't depend on them to meet costs. The psychology of a donation is that it is free money, and the corresponding $-value therefore matters less.
So the key for bitcoin to grow in the near future is donations, especially micro-transactions. However, this brings us some challenges:
(1) We want people who know nothing about bitcoin to consider using it to make online donations,
(2) many of these donations will be micro-transactions (pennies in return for blog posts, etc.)
The best way to approach this problem, in my view, is to set up a donation service which would handle micro-transactions outside the bitcoin network. Here's how it would work:
The site is like a "bank" for bitcoins. You can add and remove funds to a bitcoin address on demand.
Newcomers (who may not know about bitcoin or have any) can purchase bitcoins straight into their accounts.
A donation button can be embedded anywhere on the web. Clicking on that button initiates a default micro-payment to the recipient, using a cookie for authentication, or requiring authentication on a separate web page.
All accounts can send and receive transactions in this way.
Such a system would have a chance at bringing bitcoin donations to the mainstream. Keeping donations outside the bitcoin network means that newcomers don't have to download the client. Buying bitcoin straight into your account avoids having to go through the exchanges. Finally, processing transactions outside the network (in a simple database) reduces transaction cost on the network (there are currently delays reported for small transactions, while paying fees on a microtransaction makes it less worthwhile.)