What can make an unconfirmed transaction (0-conf) an invalid one other than Double-spend? It's obvious that inputs that already been spent will make the transaction invalid (pure double-spend scenario), but is there's anything else that could make a tx invalid?

Invalid inputs?
Invalid signature or other data?

For example, if I have a program that manages a wallet (keypairs are exclusively managed by it, and not by any human, and it's source is public) and it sends payments, can the recipient be insured that even 0-conf tx will be eventually valid and processes?
There are a lot of things that can make a transaction invalid. Note that an invalid transaction cannot be confirmed as the block that contains it would also be invalid, thus there is no such thing as a confirmed or unconfirmed invalid transaction.

Things that make a transaction invalid:


Spending an input spent by another transaction that is confirmed
Spending an input that does not exist
If signatures are required and must be valid, providing an invalid signature
If some data must hash to something provided (e.g. pubkey hash, scripthash), providing a piece of data that does not hash to the correct hash.
In general, any input script not validating to true
Negative output values
Sum of the output values is greater than the sum of the input values
A coinbase transaction outside of a block
A coinbase transaction that is not the first transaction of a block
A coinbase transaction where the sum of the output values exceeds the block reward


There's probably a few more that I missed, those are just a few that I can think of off of the top of my head.


  can the recipient be insured that even 0-conf tx will be eventually valid and processes?


No. There is no guarantee that an unconfirmed transaction will eventually confirm, even if it is valid. Note that transactions do not become valid; they are either valid or invalid upon creation.