It occurred to me that \tikz[remember page,overlay] must already wait until the page is laid out in order to work right. Nor will it change the layout since it overlays the existing text.
\documentclass{memoir}
\usepackage{tikzpagenodes}
\newlength{\tempx}
\newlength{\tempy}
\newcommand*\shybar{\ifvmode\tikz[remember picture,overlay]% start of paragraph
{\pgfextracty{\tempy}{\pgfpointdiff{\pgfpointorigin}{\pgfpointanchor{current page text area}{north west}}}%
\ifdim\tempy<\baselineskip\relax%
\else\pgftext[base]{\textbar};\fi}%
\else\tikz[remember picture,overlay]% inside paragraph
{\let\p1=\pgfpointdiff{\pgfpointorigin}{\pgfpointanchor{current page text area}{north west}}%
\pgfextractx{\tempx}{\p1}%
\pgfextracty{\tempy}{\p1}%
\ifdim\tempy<\baselineskip \ifdim\tempx=0pt \relax%
\else\pgftext[base]{\textbar};\fi%
\else\pgftext[base]{\textbar};\fi}\fi%
\hspace*{1pt}}% reserve space
\begin{document}
\shybar This bar should not be printed, but \shybar this one should.
\rule{1pt}{7.1in}
Last line of page\newline
\shybar This bar should not be printed, but \shybar this one should.
\end{document}
This approach has a problem with things like hanging indentation.
\shybar
to disappear if it is inside a paragraph and it happens to be the first item on the first line on a new page: paragraphs are typeset before page break decision are made.