Is there a way to temporarily take down my site while I do maintenance?

You have a few options for this:

1)  You can create a custom page in Sites > [site name] > Pages that says, "This site is currently under construction. You cannot currently order products." or something similar. Then assign this as your home page in Sites > [site name] > Settings > General Info tab in the Branding section.  In this way the users will be forced to see a message that the site is under construction.  
However, it would not completely prevent users from placing orders if you have links to specific products in the navigation of the site or if the user knew the exact url of a product and typed that into their address bar.  To further prevent them from placing orders, you could create a shipping method in Preferences > Shipping and name this shipping method something like "Site Under Maintenance."  You could set this to be a non-integrated zone shipping method.  Create a single zone that is a foreign country to which your users would never ship.  Then in Sites > [site name] > Settings > Shipping tab, turn off all shipping methods except the Site Under Maintenance method.  The users would not be able to check out since no shipping options would be available.
2)   You could change the domain for the site in Sites > [site name] > Settings > Domains to a temporary domain.  You will recall that we provided you with a temporary base domain when you signed up for the system.  You could switch the domain of the site to a temporary domain.  When you are ready to "turn the site back on," you could switch the domain back to your permanent/live domain.  With this method, if the user attempts to access the site at the old domain, it would not be available.  You could still make changes to the site on the temporary domain.
3)  As an extension of option 2, you could set up a new site that is just a "splash page" that temporarily uses the domain of your original site, while running the original site on a temporary domain.
a) In the original site, go to Site > Settings > Domains tab. Add a new domain that you won't want to use with any other site (for example: Then, make that new domain the primary domain. Finally, delete the original domain and click Save.
b) Duplicate the original site (this may be the easiest option). Give the duplicate the original domain but UNCHECK all the options of items to be copied, especially the users, since you don't actually want to have any users in the new site. Please note: You will want to make this new site a Customer-specific (B2B) site when you duplicate it, as all plans include unlimited B2B sites.
c) In the new site, go to Site > Settings > Instructions tab. In the "Login Page Instructions" area, add the text and/or images that you want to use to convey that the site is temporarily not taking orders. Click Save when you are done.
d) Once the changes go through in our server (usually 1/2 hour or less), when your client goes to visit the original domain, they'll be directed to the new login page with your message on it. If they try to log in, they will not be able to, since they don't exist as a user in this new site.
e) Once you're ready to take the original site online again, go to Site > Settings > Domains tab in the duplicate site. Add a new domain that you won't want to use on any other site. Then, make that new domain the primary domain. Finally, delete the original domain and click Save. Then, go to Site > Settings > Domains tab in the original site. Add the original domain back to that site and make it the primary domain. Delete the temporary domain, and then click Save. Once all this is done, you can delete your temporary site if desired.