The block you are working on contains a link to the previous block in the block chain.
If somebody else finds a block and you don't drop the block you are working on, then the block you are working on is invalid because it is pointing to the wrong previous block. Pointing to the wrong previous block means that you might (likely) have duplicated transactions compared to the previous one that somebody else found.
If all the long polling pools are leapfrogging the block chain, how can we tell that all the blocks are being solved?
Do the non long polling pools and solo miners come behind that and find the blocks that aren't solved and work on them?
Where did this leapfrogging come from? There aren't just like a set of blocks that need to be solved and you can solve them in any order. You have to CREATE a valid block. A valid block points to the most recently created (previous) block.
Somebody created block#1, and then somebody created block#2, #3 and so on.
Now, everybody is working on creating a new block (that will eventually be called block#4) that points to block#3 as the previous block.
If somebody other than you created block#4, the new block that you are trying to create needs to point to block#4 as the previous, not block#3, otherwise it will be invalid.