A homegrown version. It redefines \label and \ref and then use \unusedlabels at the end to see which labels are unused. Once the process is done, you can remove the redefinitions.
\label is redefined to make a concatenated space-separated string of all the labels.
\ref is redefined to go through the concatenated list, item by item, and compare the item to the \ref argument, and proceeds to rebuild the concatenated list. If the compare is true, it does nothing, thereby removing the item from the list. If the compare is false, it adds the item back onto the reconstituted list.
Anything left on the list at the end is unused.
\documentclass{article}
\usepackage{etoolbox}
\let\svlabel\label
\let\svref\ref
\def\unusedlabels{}
\renewcommand\label[1]{\svlabel{#1}\global\edef\unusedlabels{\unusedlabels$<$#1$>$ }}
\renewcommand\ref[1]{\svref{#1}%
\edef\teststring{$<$#1$>$}%
\edef\tmp{\unusedlabels}%
\def\unusedlabels{}%
\expandafter\refhelper\tmp\relax%
}
\def\refhelper#1 #2\relax{%
\edef\expandcase{#1}%
\ifdefstrequal{\teststring}{\expandcase}{}{\edef\unusedlabels{\unusedlabels#1 }}%
\if\relax#2\relax\else\refhelper#2\relax\fi
}
\begin{document}
\section{BLA}\label{bla}
\begin{equation}
\label{eq:first}
y=x
\end{equation}
\section{BOO}\label{boo}
\begin{equation}
\label{eq:second}
y=x^2
\end{equation}
In Section~\ref{bla}, I use equation \ref{eq:first}.
Unused labels are \unusedlabels
\end{document}

hyperref? – Werner Oct 30 '14 at 18:24\bibitem ... \citesince that information is inaux, and it's a one-liner in bash. However,\refkeeps no trace inaux... – yo' Oct 30 '14 at 18:27hyperreffor those 5 minutes needed for the cleanup ;) – yo' Oct 30 '14 at 18:27