You can apply Bruno Le Floch's magic powder (see below), but there is a simpler solution using the letltxmacro package, as egreg kindly pointed out. So, let's start with the simpler solution:
Redefining \proof using letltxmacro
\documentclass{article}
\usepackage{amsthm}
\usepackage{letltxmacro}
% \usepackage{lipsum} % uncomment to test the behavior at a page break
\makeatletter
\LetLtxMacro{\proof@ORIG}{\proof}
\renewcommand{\proof}[1][\proofname]{%
\proof@ORIG[#1]\mbox{}\par\nobreak
}
\makeatother
\begin{document}
% To test the behavior at a page break, use \lipsum[1-4]\par\lipsum[5][1-11]
% here, then add a few words in order to see the proof pushed to the next page.
\begin{proof}[Proof of my theorem]
First line of my proof.
Intermediary lines of my proof:
\begin{itemize}
\item next-to-last line
\item last line of my proof
\qedhere
\end{itemize}
\end{proof}
\begin{proof}
First line of my proof.
Intermediary lines of my proof:
\begin{itemize}
\item next-to-last line
\item last line of my proof
\qedhere
\end{itemize}
\end{proof}
\end{document}
Without using letltxmacro
Note: this is not better than what precedes! The problem one faces with a naive redefinition of \proof using \let is due to the optional argument of \proof: \\proof (with two backslashes) is an intermediate macro defined by the \newcommand machinery internally used by \newenvironment; \\proof accepts \proof's optional argument as a delimited argument (TeX macros don't have the concept of optional arguments—LaTeX added this concept).
\\proof:
\long macro:[#1]->\par \pushQED (...)
Here is code that does what you want, based on Bruno Le Floch's magic powder:
\documentclass{article}
\usepackage{amsmath,amsthm}
% \usepackage{lipsum} % uncomment to test the behavior at a page break
% Redefinition that combines <https://tex.stackexchange.com/a/8091> (Bruno Le
% Floch) and <https://tex.stackexchange.com/a/85081> (Barbara Beeton).
% Actually, the latter has been modified a bit here after egreg's feedback.
% ;-)
\expandafter\let\expandafter\oldproof\csname\string\proof\endcsname
\let\oldendproof\endproof
\renewenvironment{proof}[1][\proofname]{%
\oldproof[#1]\mbox{}\par\nobreak
}{%
\oldendproof
}
\begin{document}
% To test the behavior at a page break, use \lipsum[1-4]\par\lipsum[5][1-11]
% here, then add a few words in order to see the proof pushed to the next page.
\begin{proof}[Proof of my theorem]
First line of my proof.
Intermediary lines of my proof:
\begin{itemize}
\item next-to-last line
\item last line of my proof
\qedhere
\end{itemize}
\end{proof}
\begin{proof}
First line of my proof.
Intermediary lines of my proof:
\begin{itemize}
\item next-to-last line
\item last line of my proof
\qedhere
\end{itemize}
\end{proof}
\end{document}