This is just a proof of concept, it do not check for duplicate references on the same page or for two or more ref, etc. It still need a lot of refinement and protection against active chars, make it work with hyperref, etc.
To use it, put the command \makefigreflist in your preamble and use the custom \figcaption[shortcap]{longcap}{label} and \figref{label} commands. It must be latexed twice.
EDIT 1: Write info direct to output file and made it a little bit more safe
\documentclass{article}
\makeatletter
\newcommand*\figreflistout[1]{}
\newcommand*\makefigreflist{%
\begingroup
\makeatletter
\@input{\jobname.frl}%
\newwrite\frl@outfile
\immediate\openout\frl@outfile=\jobname.frl\relax
\endgroup
\let\makefigreflist\@empty
\renewcommand*\figreflistout{%
\@bsphack
\begingroup
\@sanitize
\@figreflistout}%
}
\newcommand*\@figreflistout[1]{%
\protected@write\frl@outfile{}%
{\string\addtofigreflist{#1}{\thepage}}%
\endgroup
\@esphack}
\newcommand*\addtofigreflist[2]{%
\@ifundefined{frl@#1}%
{\expandafter\protected@xdef\csname frl@#1\endcsname{#2}}%
{\expandafter\protected@xdef\csname frl@#1\endcsname{\csname frl@#1\endcsname, #2}}}
\newcommand*\printfigreflist[1]{%
\@ifundefined{frl@#1}%
{\ (not referenced)}%
{\ (referenced on page~\@nameuse{frl@#1})}}
\newcommand\defaultcapt{}
\newcommand\figcaption[3][\defaultcapt]{%
\renewcommand\defaultcapt{#2}%
\caption[#1\protect\printfigreflist{#3}]{#2}%
\label{#3}}
\newcommand\figref[1]{%
\ref{#1}\figreflistout{#1}}
\makeatother
\makefigreflist
\begin{document}
\listoffigures
\begin{figure}
\figcaption{First figure}{fig:01}
\figcaption{Second figure}{fig:02}
\figcaption{Third figure}{fig:03}
\end{figure}
\bigskip
In figure \figref{fig:01} and \figref{fig:02} it is..
\clearpage
In figure \figref{fig:01}
\clearpage
In figure \figref{fig:01} and \figref{fig:02} it is..
\end{document}
