What I've got set up at home is a separate box running Ubuntu Server with Apache, MySQL, and PHP on my local area network behind my firewall. Technically, yes, it's connected to the internet, but it doesn't go there. I develop on my Windows machine and "upload" the files to my local Ubuntu server across the local area network. That's where I develop and test everything. You'll want to download Putty in order to control the server from your development machine (unless you've got a spare monitor and keyboard lying around, but even then it's easier with Putty), and look into setting up virtual hosts in Ubuntu, which is actually quite simple even if you're like me and know next to nothing about Linux. I mean, I don't hyperventilate when I see a command line interface, but I'd rather avoid one when possible.
So, for me when I start a new project, I'll Putty in to the Ubuntu server from my Windows box, create a new virtual host called something along the lines of 'projectname.com', use phpMyAdmin or MySQL Workbench to create the database, code on the Windows box and upload to the local Ubuntu server. Because it's a virtual server, it's almost exactly like dealing with a live hosting environment except that the customer can't access the local server - that's where you bring in a staging server, something along the lines of 'dev.yoursitename.com' where the customer can actually see the work when it's ready for milestone presentations. This also gives you a chance to troubleshoot and server-specific issues you may run across before the site goes live.
As a bonus to working this way, you get to learn a little Linux while you're at it.