Would just waiting for a larger number of confirmations defeat the attempts at double spending?
Like instead of the standard 6, instead wait for 8, 10, 12? Whatever the safe amount would be so that there would be enough blocks solved by different independent sources. Or am I missing something here and that wouldn't be a solution to the problem...
As has already been pointed out, someone with more than 50% of the total bitcoin network hashing power (in other words, more hashing power than the entire combined rest of the bitcoin network), then they have a better than 50% chance of solving the next block.
If they fail to find the next block fast enough, then they can ignore the block that the rest of the network is working and, and continue on their own block. They still have a better than 50% chance of solving their block before the network moves on to yet another. Because their probability is better, sooner or later, they will solve enough blocks in a row to create a chain longer than the one they are trying to replace. The higher above 50% they have, the faster they'll be able to get such a chain of blocks. Once their chain is longer, their chain replaces the existing one. Any transactions that were confirmed in any of the replaced blocks that aren't also in the attacker's blocks immediately become unconfirmed. If the attacker spends any outputs in his blocks that were spent elsewhere in the chain being replaced, then those transactions in the replaced blocks don't just become unconfirmed, they also become invalid and they disappear.
They can start their attack chain many blocks before paying you. Therefore, no matter how many confirmations you want to wait for, they can make sure that they have a long enough chain to broadcast once you've accepted the payment.