Assuming you want all of the cleveref user-level macros to behave this way, and not solely \Cref, we can use a similar approach to the one in the original question, substituting the internal cleveref macro names and search code:
\documentclass{article}
\usepackage{amsthm,etoolbox,xcolor,hyperref,cleveref}
\makeatletter
\patchcmd{\@@setcref} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcref} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcrefrange} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcrefrange} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcrefrange} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcrefrange} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcrefrange} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcrefrange} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setnamecref} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setnamecref} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcpageref} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcpageref} {??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcpagerefrange}{??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcpagerefrange}{??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcpagerefrange}{??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcpagerefrange}{??}{\color{red} undefined Label}{}{}
\patchcmd{\@@setcpagerefrange}{??}{\color{red} undefined Label}{}{}
\patchcmd{\@@cref} {??}{\color{red} undefined Label}{}{}
\makeatother
\bibliographystyle{amsalpha}
\newtheorem{theorem}{Theorem}
\begin{document}
\section{Section}\label{god}
\subsection{Subsection}\label{dog}
\subsection{Subsection 2}\label{dog2}
\begin{theorem}\label{catfish}
\end{theorem}
\begin{equation}\label{math}
\end{equation}
\Cref{catfish} implies the truth of \cref{god} and \cref{dog}.
Also \cref{catfish,dog,god,math}. \Crefrange{dog}{dog2} with \crefrange{dog}{dog2}.
\bibliography{bibshort}
\end{document}
There are many more patches to perform here, because cleveref has many private helper macros for its different user-facing commands. Additionally, a replacement is only performed the first time the search text is found in the command, so we must repeat the patch if the search text occurs multiple times within one command.
Output on the first run:

Output on the second run (resolved references):

The patch text (here, undefined Label) and color red can be customized to your liking, and you can use any other formatting commands to change the way this is typeset. Inside the macros being patched, the second argument (#2) is the label, so you can use #2 anywhere in the patch replacement text to display the particular label that is undefined. For example:
\patchcmd{\@@setcref}{??}{\color{red} undefd label (#2)}{}{} % typ. (repeat for all patches)
will print "undefd label (catfish)" in red in the text when the label is not resolved.
Note: the internal macro names have changed in a subsequent version of cleveref from the current version at the time of the original answer. I've updated the answer to match the new names, but if you need to use an older version of cleveref, check the edit history of this post.
cleverefmacros or just\Cref? – Paul Gessler Jan 27 '15 at 00:58