I know that this topic is old, but I've tried Roelof Spijker's solution and it has a small drawback. Ideed, the following code:
\documentclass{beamer}
\usepackage{ulem}
\renewcommand<>{\sout}[1]{
\only#2{\beameroriginal{\sout}{#1}}
\invisible#2{#1}
}
\begin{document}
\begin{frame}
\begin{itemize}
\item \sout<2>{World Peace} \onslide<2>{World War}
\end{itemize}
\end{frame}
\end{document}
would give the following result on slide 2:
with a big blank corresponding to an invisible "World Peace". In addition, one may have issues with a long item text because of this blank.
I think the following macro would be more suitable:
\documentclass{beamer}
\usepackage{ulem}
\renewcommand<>{\sout}[1]{\alt#2{\beameroriginal{\sout}{#1}}{#1}}
which actually results in
Slide 2: