Something to be aware of when generating addresses for each user with blockchain.info is the wallet will "max out" at 1,000 addresses. They don't tell you this upfront, which is kind of lame if you chose this option for your site only to find out later. Maybe you want to generate the address and keys yourself and then assign the addresses to each new user as they sign up. You can use blockchain.info API for checking balances or using a hot wallet for sending payments.
There's also several options with running bitcoind on a VPS and then use jsonRPC calls.
https://github.com/freewil/node-bitcoin