In theory but in reality it is going to turn into a giant cluster fuck.
1) The default client doesn't allow you to control which address you send funds FROM.
2) Even if it does the user likely has funds spread across multiple addresses.
3) Shared wallet services (like yours

) don't allow a mechanism for send to "prove funds".
forgot about mixing funds and addresses in default client,
but still, weren't developers saying that you could prove ownership of exact address
since 0.6. version ?
Generate a thousand private and public keys.
Put the public keys in a database on server and assign them to user address. Import the private keys to an offline wallet of your choice. Nothing on the server to steal, and no risk of mixing up funds. Too easy right?
I suppose this would be "painless" if done with armory ?
I mean thousand keys to import and monitor when needed
in my suggested way, I would only check user balance and send