Your client will submit the transaction to all it's connected peers, which will each verify it against their own copy of the blockchain. If they consider it valid, they will forward it to all of their connected peers, and so on. Once they have seen a valid transaction that spends a particular set of coins, that peer will hang onto a copy of that transaction and reject any other transactions that it sees that tries to spend those coins again. Thus, the best defense against a double spend with the regular client is simply having a few seconds advantage over any possible double spend attempt. If you have an online store accepting bitcoins, it is too easy for an attacker to time the transactions, so it would help to use more sophisticated means of detection for online stores. Brick-&-Mortor stores would have no problem, however, since timing the transactions while at a physical cash register is difficult by it's nature. And Bitcoin aware Point-of-Sale systems have other tricks for reducing risk exposure here.
Does Bitcoin make any attempt at all to prevent double-spending or reversal at this point? If not, are there any theoretically possible approaches?
If there's no protection, my worry is that Bitcoin really isn't as "instant" as it's often portrayed to be. If I meet someone to make a transaction, do I need to hang around and smalltalk for 10-20 minutes to wait for a block or two? I mean, to be honest, I really hate smalltalk.
It's not portrayed to be instant in all cases, but it can be pretty close. Credit cards aren't instant at all, as they can be reversed up to 45 days later; they just appear to be instant because of all the user identification required. If you are willing to identify yourself using bitcoin, these same tricks could apply.