After some research, I've found out that it can be done; it is not the easiest thing to do and it's not 100% safe:
First way:
1) I sign a transaction that transfers the amount to a multi-sig address, redeemable by me and by another private key owned by the recipient;
2) I sign an incomplete transaction with the desired lock time that transfers the amount from the multi-sig address to the sole address owned by the recipient (or another). The recipient completes the transaction by signing it but does not broadcast it.
3) when the time has come the transaction is broadcasted by the recipient. The broadcast cannot be done before otherwise nodes may drop it because is too far in the future.
This schema also works if the money is needed before (e.g. health issue). I and the recipient would just have to sign a new transaction that moves the bitcoins somewhere.
There is the problem though, also pointed out by a previous poster, that the transaction format must not change meanwhile...
Second way:
Using an oracle.
sources:
https://en.bitcoin.it/wiki/Contracts (Example 4).
Best regards,
ilpirata79