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.
\shybarto 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. – egreg Jul 24 '14 at 12:59\shybaris used to mark a page skip in the original publication. What I want to do is to write\shybar\marginpar{227}to mark page 227. – Gaussler Jul 24 '14 at 16:33\ifvmode, but I don't see exactly how it can be used. Can you show me? :-) – Gaussler Jul 24 '14 at 16:34