Checking for double spending happens with each node in the bitcoin network as it relays the transaction. This takes seconds. Each node compares a given transaction as it arrives to the past transactions for that sending address. If there is not enough balance, it dumps the transaction. Nodes can do that because they have a complete history of past transactions (the Block Chain) and a memory pool of recently arrived transactions not yet in a block. Since transactions typically go through ~5 nodes from sender to everyone on the network, transactions are checked multiple times. Thus the incidence of *attempted* double-spends are less than 1 in 10,000. Successful ones are much less frequent.
When a hash for a new block is discovered by miners, they send it out over the same P2P network that relays individual transactions (that is how they get the transactions to put in a block in the first place). Each node then verifies the hash is correct, and adds it to their copy of the Block Chain. Then they delete the transactions in their memory pool that are now in the block.
Your statement "It's simple to double spend" is incorrect for a number of reasons. Someone has to hack their wallet software to allow it, then relay a transaction by different paths, because only the first arrival at a given node is allowed. Inevitably miners will accept only one of the transactions into a block, and whichever arrives first is the one they work with. Unless the sender manages to balance the double spends evenly across different parts of the network, most likely only one of them will reach the majority of miners, and thus get put in a block. The other one will get filtered by nodes before it even gets to the miners. Doing a double-spend while in line at Target is difficult because you are using a portable device which links to the internet through a single path. Even if you had a hacked app that sends your money to Target *and* another of your own addresses simultaneously, your nearest nodes that you relay the transaction through will have variable delays, and one of them will get one of the transactions out faster. If it's not the one to Target, they won't see the payment arrive at all, and tell you to try again.
If you are selling a car or a house, it would be wise to wait for a number of confirmations, and in addition check that the balance in the sending address is "mature" (over an hour old). But for small scale store checkout, zero confirmations are quite enough. The risk is much lower than "shrinkage" (theft by store employees mostly), and the fees, fraud rates, and charge-backs are way lower than for bank card transactions.