When I build this feature it will not be a perfect solution for upgrading, it might work for some or most upgrades but consider what will happen if there are schema changes to mp_Sites table which maps to the SiteSettings object. (similar issues with other key objects and schema changes may also be a problem)
The idea would be to check if(siteSettings.IsClosed) show the closed content
However if the upgrade has a schema change to the mp_Sites table then when you upload the new files and mojoPortal.Web.dll lands in the /bin folder it will cause the app to recycle and clear the cache and then when we try to get a SiteSettings object on the next request it will cause an error because the setup page has not yet run and the schema expected in code is not matching the schema in the db. So at this point it will handle the error and redirect to the setup page. The setup page will only run if it is not disabled or if the request is from an admin user currently logged in. Then once it runs everything should be fine again.
So really the safest way for an upgrade, particularly if using a slow ftp connection would be to take the site offline using the feature built into ASP.NET for taking a site offline. I've discussed this in other forum posts but realized it was not documented in the documentation, so I've just updated the Upgrading Instructions to include this information.
So the planned feature for closing a site is not really the solution for upgrading but for other scenarios where you may want to block user access but not admin access.
Note also that we already have a feature to close WebStore which would be useful if making a lot of price changes or other scenarios. You could close the store a few minutes before upgrading to prevent people from getting to the checkout process just before you upgrade. You can tell from the Cart browser whether there is someone with recent cart activity or not so you can determine whether you are about to prevent a sale by closing the store.