Using some ideas from Order items in enumerate
environment automatically, the following MWE provides a myenumerate
environment where you pass an optional argument as a number, which then excludes that specific item from the list.

\documentclass{article}
\usepackage{environ}% http://ctan.org/pkg/environ
\makeatletter
\newcounter{listcount}
\let\olditem\item% Store regular \item macro
\NewEnviron{myenumerate}[1][]{%
\if\relax\detokenize{#1}\relax% A normal list (https://tex.stackexchange.com/q/53068/5764)
\else% A reordered list
\g@addto@macro{\BODY}{\item\relax\item}% Used to delimit the items; last item identified by \item\relax\item
\setcounter{listcount}{0}% Restart at the beginning of myenumerate
\def\item##1\item{% Redefine \item to capture contents
\def\optarg{##1}%
\expandafter\ifx\optarg\relax\else% Last item not reached
\stepcounter{listcount}% Next item being processed
\ifnum\value{listcount}=#1\stepcounter{enumi}\else% Don't print this item, just step enumi
\olditem ##1% Print regular item
\fi
\expandafter\item% Recursively continue processing items
\fi
}%
\fi
\enumerate\BODY\endenumerate% Process environment
}
\makeatother
\begin{document}
\begin{myenumerate}
\item This is the first item.
\item This is the second item.
\item This is the third item.
\end{myenumerate}
\begin{myenumerate}[2]
\item This is the first item.
\item This is the second item.
\item This is the third item.
\end{myenumerate}
\end{document}
It could be generalized to process a list of items to be discarded. With a slight modification and the introduction of etoolbox
's list processing, the following processes a sequence of numbers at every \item
and either sets the item or not.

\documentclass{article}
\usepackage{environ,etoolbox}% http://ctan.org/pkg/{environ,etoolbox}
\makeatletter
\newif\ifprintitem% Condition to print item or not
\newcounter{listcount}
\let\olditem\item% Store regular \item macro
\NewEnviron{myenumerate}[1][]{%
\if\relax\detokenize{#1}\relax% A normal list
\else% A reordered list
\g@addto@macro{\BODY}{\item\relax\item}% Used to delimit the items; last item identified by \item\relax\item
\setcounter{listcount}{0}% Restart at the beginning of myenumerate
\def\item##1\item{% Redefine \item to capture contents
\def\optarg{##1}%\show\optarg%
\expandafter\ifx\optarg\relax\else% Last item not reached
\stepcounter{listcount}% Next item being processed
\printitemtrue% Always print item
\renewcommand*{\do}[1]{\ifnum\value{listcount}=####1 \printitemfalse\fi}%
\expandafter\docsvlist\expandafter{#1}% Process list of possible exclusions
\ifprintitem
\olditem ##1% Print regular item
\else\stepcounter{enumi}% Don't print this item, just step enumi
\fi
\expandafter\item% Recursively continue processing items
\fi
}%
\fi
\enumerate\BODY\endenumerate% Process environment
}
\makeatother
\begin{document}
\begin{myenumerate}
\item This is the first item.
\item This is the second item.
\item This is the third item.
\item This is the fourth item.
\item This is the fifth item.
\item This is the sixth item.
\item This is the seventh item.
\item This is the eighth item.
\end{myenumerate}
\begin{myenumerate}[2,3,8]
\item This is the first item.
\item This is the second item.
\item This is the third item.
\item This is the fourth item.
\item This is the fifth item.
\item This is the sixth item.
\item This is the seventh item.
\item This is the eighth item.
\end{myenumerate}
\end{document}