The Blockchain for Android (which is tied to your Blockchain.info/wallet ) lets you enter the price in USD (in the amount field click the "pen" to edit the currency) but it just converts using the BTC/USD rate.
If you use BitPay, they take care of any volatility issues. So from your tablet you simply load your merchant checkout page, enter the amount (in USDs if you wish), click Checkout Now and then BitPay presents an invoice with the QR code for the customer to scan. The QR code includes the amount of BTCs. If your account is set up to keep the proceeds as BTCs, then the fee is 1%. If you want USDs instead, then the fee is 3%. But that conversion to USDs happens at the price at the time of sale, so you aren't exposed to exchange rate risk. They will then send the USD amount as an ACH/Direct Deposit transaction.
Here's an example of the merchant's side:
- https://bitpay.com/m/428316/checkout
It would be nice for a merchant solution where there is no intermediary, and that will likely be built as there are more and more brick & mortar merchants coming on board. When rolling your own though, there is still the risk to accepting payment on zero confirmations:
- http://en.bitcoin.it/wiki/Double-spending