As noted in another answer \everypar
is used for multiple things in the LaTeX core. It's often redefined in one lexical scope or another, so using it for this might work, but you'd be fighting special cases all the way, which means it probably wouldn't be robust. If you do manage to get that to work, though (I may be pessimistic here), I'd like to see that.
If I recall correctly, a per-paragraph hook is useful enough that I think there's to be support for it in LaTeX 3, but that won't help just now, obviously.
When I've had to do a similar thing, I've just defined a simple macro which I invoke at the beginning of each paragraph:
\newcounter{paranum}
% The following isn't quite right,
% as it seems to slightly change the spacing after the first line,
% in some circumstances.
% Good enough for the moment, however.
\newcommand\p{\refstepcounter{paranum}%
\hskip0pt
\vadjust{%
\vbox to 0pt{%
\vss
\ifodd\thepage
\hbox to \textwidth{%
\hfil
\hbox to 0pt{\quad\emph{\tiny\theparanum}\hss}}
\else
\hbox to \textwidth{%
\hbox to 0pt{\hss\emph{\tiny\theparanum}\quad}\hfil}
\fi
\vskip3pt}}}
This isn't ideal, as the comment notes, but it's worked for me, and been more fully adequate than I expected, so I've never been driven to improve it. Having an explicit \p
macro to call isn't as neat as having it happen automatically, but it means I never get a paragraph being numbered gratuitously.
The \refstepcounter
means that paragraphs are labellable.
The \ifodd
test is likely to fail near the tops of pages. The TeX FAQ explains the problem and points to possible solutions.
Edited to add an even/odd distinction.