Is it possible for the transaction to be on hold forever?
There are no rules, miners can pick the transactions they want to include in the block.

Unconfirmed transactions sit in the miners "mempool". And when size of the "mempool" becomes too high, miners may decide to clear out some old transactions. 

But there are no hard and fast rules, so you should think twice before sending transactions to the node.