You can create a transaction that cannot be executed until after a specific time or block.
1. Create a transaction that sends bitcoins to an address owned by your niece and include a lock_time value.
2. Give the signed transaction to your niece to hold.
3. After the lock expires, your niece can submit the transaction and it will send the bitcoins to her. If she submits the transaction early, it will be rejected.
Look here:
https://en.bitcoin.it/wiki/Protocol_specification#tx and
https://en.bitcoin.it/wiki/NLockTime