The explanation, that TikZ is using \nullfont is already given in percusse's answer. Therefore \settowidth will not work as expected.
\pgfmathsetlength{width("#1")}
Instead of \settowidth the pgfmath function width can be used instead:
\pgfmathsetlength\aetmplength{width("#1")}
Full example:
\documentclass[border=4pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\newlength\aetmplength
\begin{document}
\begin{tikzpicture}[
set text to width of/.code={%%
% \settowidth\aetmplength{#1}%%
\pgfmathsetlength\aetmplength{width("#1")}%
\typeout{--->`#1`::\the\aetmplength}%%
\pgfkeysalso{text width=\the\aetmplength}%%
},
]
\node[draw,
shape=rectangle split,
rectangle split parts=2,
set text to width of=This is the top of the node,
%text width=0.95in
] ()
{
This is the top of the node
\nodepart{two}
first item\\
second item\\
\ldots};
\end{tikzpicture}
\end{document}

\pgftext{...}
Another way is \pgftext, which escapes back to TeX, where \settowidth will work again. Since the argument of \pgftext is processed inside a group, \aetmplength is assigned globally and \setwidth act on a local temporary dimen register. Local and global assignments should not be mixed on the same control sequence for memory reasons.
\pgftext{%
\settowidth{\dimen0}{#1}%%
\global\aetmplength=\dimen0\relax
}%
node font
The latest version can also be used to respect the value of option node font. The value is stored in macro \tikz@node@textfont. Without \makeatletter and \makeatother the control sequence can also be specified by \csname and \endcsname:
\documentclass[border=4pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\newlength\aetmplength
\begin{document}
\begin{tikzpicture}[node font=\tiny,
set text to width of/.code={%%
\pgftext{%
\csname tikz@node@textfont\endcsname
\settowidth{\dimen0}{#1}%%
\global\aetmplength=\dimen0\relax
}%
\typeout{--->`#1`::\the\aetmplength}%%
\pgfkeysalso{text width=\the\aetmplength}%%
},
]
\node[draw,
shape=rectangle split,
rectangle split parts=2,
set text to width of=This is the top of the node,
%text width=0.95in
] ()
{
This is the top of the node
\nodepart{two}
first item\\
second item\\
\ldots};
\end{tikzpicture}
\end{document}

\nullfontinside the tikz picture. – percusse May 03 '15 at 17:42\nullfont? And whatever that is, is there a way to work around it? – A.Ellett May 03 '15 at 17:44\nullfontis the primitive, roughly speaking, that maps the font definition to zero. Hence in the code, your text input is expanded to zero width as text is mapped to nullfont. You can place things into a temporary box and measure its width instead. TikZ does that to ignore any dangling text commands etc. within the picture. – percusse May 03 '15 at 17:50\settowidth\aetmplength{\mbox{#1}}and I tried\sbox\aetmpbox{#1}\aetmplength\wd\aetmpbox, but neither approach is working. – A.Ellett May 03 '15 at 18:50\pgfutil@selectfont\settowidth\aetmplength{#1}\pgfkeysalso{text width=\the\aetmplength}– percusse May 03 '15 at 23:29\pgfutil@selectfont. Care to write up an answer? Where did you find this macro? – A.Ellett May 04 '15 at 00:09\pgfutil@selectfontappears to expand to\protect\selectfontand yet, when I replace\pgfutil@selectfontwith\protect\selectfontthings break once more. Any clue? – A.Ellett May 04 '15 at 00:24\nullfontactivation. – percusse May 04 '15 at 09:34