Of course, honest merchants thrive, and the ones who try to keep a quick bitcoin or two because of a mistake are going to be quickly dismissed. Same happens with cash, if you accidentally pay with a $50 instead of a $20 and realize later, you might or might not get your missing money back if you go to the only merchant you spent money that day.
But I think you are mistaken about the block chain being able to save you or your merchant from accidental transactions. First a merchant should never have the same public sending address because it is
not secure. And even if he did, nobody is going to save you or even believe you if you claim a merchant "stole" your bitcoins, why would we, or why should we for that matter?
For better of for worse (I personally think its for better) with bitcoins you are truly on your own. Its going to be tough for many people to transition from government money transactions (with credit cards for example) to real online cash type money like bitcoins, after so many years, generations even, of being consumer protected.
I am referring to transactions online. If you make a mistake sending money to a different Dwolla account or another bank account, it can usually be saved by asking the bank to reverse it, of if you mistype 10000 for 100.00 a bank will probably catch it and tell you there are limits. Not with bitcoins.
Probably always?
If I deal with honest exchanges and merchants, I am almost
assured of getting my funds back. What exchange or merchant will keep coins you accidentally sent? That would be suicide for them. The transactions are all in the blockchain for everyone to see.
Heck, 60% of random strangers are going to return coins that are accidentally sent.
Also, the bitcoin exchange that I deal with has a confirmation dialog for all bitcoin transactions. To let a mistake by twice, I'd have to be drunk, stoned, or stupid.