I'm not sure how wallets typically do this but let me give you some options:
1) Wait until the transaction is mined in any chain and update status. This is rather straightforward but may confuse the user, as you said
2) Wait until there are X blocks mined after the given transaction. Exchanges call these "confirmations" and typically they require maybe 10 of them for Ethereum transactions. So when there are 10 blocks mined on top of the one with your transaction it's considered secure enough and it's "accepted" as the end result.
One of the problems you have is that you can never know how many chains there are and what they look like. Many of the chains probably die out before you even know about them and they're like 1 block long side-chains. Or maybe you hear of them but you can immediately tell that they're most likely dead already.
Another problem you have is that there is never 100% security. Even if you wait 100 blocks, or confirmations, the block with the transaction may in theory end up in a dead chain. In theory it's possible to start a new chain from the genesis block today and it eventually becomes the main chain, if you have enough mining power.