TODONOTES and \reserved@a - nested itemize/enumerate environments

You can't have verbatim in the argument to any command, including \todo.

For itemize, this works:

\documentclass{article}

\usepackage{todonotes}
\usepackage{verbatim}

\begin{document}

\todo[inline]{%
Problem when nesting objects like enumerate, itemize, or verbatims.
 Others like \textbf{BOLD} work fine.
}
\todo[inline]{%
\unexpanded{\unexpanded{\begin{itemize}
\item A
\item B
\item C
\end{itemize}}}
}

\end{document}

Alternatively, use \protect\begin{itemize}, \protect\item and \protect\end{itemize}: the argument to \todo is a moving one, so fragile commands must be protected.


The todonotes manual (Page 15) suggests creating a macro using a minipage like this:

\newcommand\todoin[2][]{\todo[inline, caption={2do}, #1]{
\begin{minipage}{\textwidth-4pt}#2\end{minipage}}}

\todoin{
Some text.
\begin{align}
    \sin(\theta)^2 + \cos(\theta)^2 = 1
\end{align}
A formula and a list
\begin{itemize}
    \item An item
\end{itemize}
}

According to the manual it is important to set the caption of the \todo, so the package will not try to embed a minipage into your table of contents, which would result in an error.