When the menu entry specifies a pageRef, Hugo attempts to find a published page with the corresponding logical path. Draft, future, and expired content is not published, so the menu entry’s .Page method returns nil.
So you can exclude menu entries by wrapping the rendering code in a conditional. For example:
{{ with site.Menus.main }}
<nav class="nav-inline menu">
<ul>
{{ range . }}
{{ if .Page }} <---------------- begin conditional
{{ if $.IsMenuCurrent .Menu . }}
<li class="active"><a aria-current="page" href="{{ .URL }}">{{ .Name }}</a></li>
{{ else if $.HasMenuCurrent .Menu . }}
<li class="ancestor"><a aria-current="true" href="{{ .URL }}">{{ .Name }}</a></li>
{{ else }}
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
{{ end }}
{{ end }} <---------------- end conditional
{{ end }}
</ul>
</nav>
{{ end }}
You could also check for .URL, which will be an empty string if the page does not exist.