transactions that are not chosen for inclusion in a block (likely due to low transaction fees) do age out of the mempool eventually, so there is a network-enforced "timeout". It's not a hard number but it will eventually happen.
Also obviously there is a human-imposed "timeout" too. Like, if you buy something with Bitpay they expect your transaction to be included in one of the next 3 blocks. If it's not, they will "timeout" the transaction and it bounces. If it is eventually mined for inclusion, they will voluntarily return it to you minus whatever fees they choose to charge (average transaction fee is $24 right now, so you will lose $24 sending it to them, then $24 for them sending it back to you, and $24 to send it again).
(of course they don't have to send it back to you, there is no network-enforced mechanism for this, they could bounce the transaction and then if it gets included an hour later they could not pay you back, the money is under their control once you've signed the transaction. They could even maintain a separate mempool of these "dead" transactions and use a friendly mining pool to process those transactions preferentially...)
* Accept transactions that are in the mempool * Use the lightning network
Accepting mempool transactions obviously has lesser guarantees and unfortunately lightning hasn't seen great adoption even from centralised exchanges.