The new site can’t be accessed under the current domain of course. You would need to use a temporary URL. As in staging.example.com/ or example.com/staging/ or even foobar.com. The staging site can be hosted anywhere because no matter where it is, you need to go through a site move procedure to get it to be used for the current domain. It’s helpful though if the database doesn’t need to be moved as well, though that’s not a big problem to do.
Thus the easiest thing to do is build the site at example.com/staging/. Once the site is ready for prime time, the current site can be moved to a subfolder, or just deleted if you have good backups. Then the staging site can be moved into the public root position. Of course all the links on the staging site will now be wrong, but that can be dealt with. There’s detailed information on moving a WP site in the Codex.
I personally prefer the interconnect/it script for updating the links, but it’s not for everyone. Just be sure the DB is backed up before using this tool.