You could tell that right away using Blockchain.info as it will show double spend information for the transaction if there appears to be any spending conflicts.
After a period of time, pools will forget about transactions (as they can age out of the memory pool as it fills) so what needs to occur is for the sender to re-broadcasdt the transaction occasionally. The Bitcoin-Qt/bitcoind client will do this forever. Other clients may vary in the frequency of re-broadcast. Some E-Wallets (including Blockchain.info/wallet) sometimes seem to no re-broadcast transactions that are older and haven't confirmed (and thus the funds become available for spending once again). That doesn't happen often, but it happens enough to be in the range of possibilities explaining why an unconfirmed transaction might not ever get a confirmation.