I'm IT for a company that does this for 95% of dev/test/qa systems.
It's worked out pretty well. Most servers are spun up and then chef'ed, used, then deleted after tests/whetever are complete.
We do keep our code in house. SVN/GIT/ and Jenkins along with server build farms are all in house.
The cloud services are expensive, but since IT has automated the deployment process for the cloud hosts, it works out better than keeping enough hardware in house to meed all test/qa needs. Plus less hardware in house equals less admin time which is a plus for us.