you are assuming here that you have to "run back to your car", and so on.
If a transaction requires that it be included in a block to be valid (and it does), then you can double-spend by double-spending at the same time.
Just send the amount to another wallet you control while buying the groceries, using your phone which is on the network as well.
At least 50% of the time, you will win, even if you can't work out how to defeat it 100% of the time.
And 50% is a pretty good discount.
Therefore my conclusion is BTC will require another layer, providing wallet identification, in order to be trusted for the transactions that are handled with a confirmation point of sale "beep" that tells the checkout person to let you walk away with the bag.
It will have to be opt-in. You want to buy something truly instantly, not 1 to 30 minute instantly? you must use a wallet with an identity attached and a third party service handling the verifications of those identities. One way or another.
Oh whoops we're back to credit cards again.