Parameter wie `\clubpenalty` und `\widowpenalty` verhindern die einzeln stehenden Zeilen global und nicht nur bei Listen.
Streiche in deinem Code »[needspace](http://ctan.org/pkg/needspace)« und das dazu gehörige `\needspace{2\baselineskip}`, setze sowohl `\clubpenalty=\maxdimen` als auch `\widowpenalty=\maxdimen` in den Vorspann und schon hast du ein Beispiel.
Vorspann.
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{forloop}
\newcounter{items}
\clubpenalty=\maxdimen
\widowpenalty=\maxdimen
\begin{document}
\begin{enumerate}
\forloop{items}{1}{\value{items} < 10}
{\item \blindtext}
\end{enumerate}
\end{document}