when you select 'allow navigation only for registered user, you can define the pages which will be available to non registered users with a little code manipulation
look at this post
https://www.nopcommerce.com/boards/topic.aspx?topicid=2660this is an excerpt from my overrides
if ((!CommonHelper.GetThisPageURL(false).ToLower().Contains("/login.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/register.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/contactus.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/aboutus.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/captchaimage.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/shippinginfo.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/privacyinfo.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/conditionsinfo.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/passwordrecovery.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/specialoffers.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/products/596-order-a-sample.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/default.aspx"))
&& (!CommonHelper.GetThisPageURL(false).ToLower().Contains("/logout.aspx")))
EDITNOTE:
the process is different from v1.8 onwards - instead of altering BaseNopPage.cs, you edit the codebehind of the individual pages ( see post by ' efalsken ', below )