This is an annoyingly complex process!
Create the site under a sub directory or subdomain.
When you're ready to go live use the htaccess code at the bottom of this post to redirect everyone but you to a maintenance page (replace the ip address with your own).
Backup and then delete the existing site code from the root directory.
Move the wordpress codebase into your root directory.
Access your database via phpMyadmin or similar tool.
Find the wp_options
table, browse the contents for the siteurl
field and update it to the new url.
Now login to Wordpress, and change your permalinks setting to one of the other options, save it, then change it back to the original setting (this regenerates your wordpress htaccess settings).
Use a link scanner tool, like XENU's link sleuth, to scan the site for any urls which point to the dev site and manually update them.
Remove the maintenance page redirect code and you're good to go.
Done. It's a total pain the the backside, and the last step is down to the fact that wordpress auto generates absolute urls inside posts and pages on first save. You can go back after a save and change the urls to relative ones or search the database in phpMyAdmin to amend them, but the technique outlined above is safer and more reliable (bitter experience).
As @Drai says you can redirect from root to a subdirectory, but don't do it unless you really need to. Depending on the config you choose you can end up with Wordpress's self generated links to pointing the subdomain or directory all redirecting back via the root. This is a nightmare when you are trying to do permanent redirects to keep your pagerank in one piece during a migration phase and can screw up your analytics (you become your own referrer).
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^1\.1\.1\.1
RewriteCond %{REQUEST_URI} !/temporary-offline\.html$
RewriteRule .* /temporary-offline.html [R=302,L]