Well you could design it in a way where the amount get unlocked and become available after X block. A Block is about 13 sec so it will give you an proximate month.
You would still need a process to activate this transaction execution and provide some gas. The contract will not be triggered because it reach a time limit.
Some easy solutions for you.
- Use a time frame to count how much is unlocked and claimable by the recipient. (User will pay the gas)
- Use a Bot. (You pay the gas)
- Use a process (transaction) that runs often and use it to trigger the transfer(at users expense in the worst way)
There are probably other solutions, For example there is a fluid token model that stream an amount over time. That token could then be turned back to ETH.
So it's really a matter of who will pay the gas for your automated task in the end.