smart contracts in Ethereum are reactive, not proactive. In other words, they need to be "woken up" by a transaction / method call in order to do be activated. So no self-contained code in your smart contract can do what you want. However, you still have 2 options:
fire an event in response to the reception of ether; then have a service (e.g. written in node.js with web3) listening to the event, counting 6 new blocks from it and then triggering the token transaction method on the smart contract. Keep in mind that there is no guarantee that the transaction will be accepted in the next block anyway, so it's more like 6+ blocks.
Use some sort of alarm service like Ethereum alarm clock that will do it for you (for a fee).