Yes, any valid Bitcoin transaction that has been broadcast to the network stays valid indefinitely, unless a conflicting transaction that spends some of the same inputs is mined into a block. That means even if most nodes forget about transactions, you cannot rely on the default behavior of nodes (i.e. the two week timeout and the not rebroadcasting), you need to expect that any transaction you have ever submitted to the network might still get mined, unless it has been replaced. Optimally if you repeat a payment in a new transaction because the old got stuck and eventually dropped, you should use one of the same inputs in the replacement transaction: that way the two attempts at paying the recipient are exclusive, only one can get into the blockchain. Alternatively, you might just want to explicitly spend one of the inputs as soon as you get around to it after a transaction is dropped from the mempool, unless you’re still trying to get it confirmed.