I am actually trying to implement instant downloads also. I have investiaged many options, and I beleive the best and freest way involves opening up a websocket to blockchain.info via their api (
http://blockchain.info/api/api_websocket) and tell it to listen for notifications for whenever there is a transaction to your address. Then it is just a matter of providing a secret download link for a particular ip addresses or account. But again I'm still trying to implement this, so please let me know if you have any ideas or luck.
Currently I am using the blockchain.info Receive API (
http://blockchain.info/api/api_receive) but it takes like 10 minutes for blockchain to send confirmation. I modified their example program...You can try my test link:
http://efjz.in/?d=test.mp3