Das Problem, das du bei localghosts Lösung hast, hast du bei meiner aber auch:
\documentclass{beamer}
\begin{document}
\newif\ifsub
\let\tmpsection\section
\def\section{\global\subfalse\tmpsection}
\let\tmpsubsection\subsection
\def\subsection{\global\subtrue\tmpsubsection}
\newcommand{\test}{\ifsub Ja!\else Nein!\fi}
\begin{frame}{}
\section{blub}
\test
\subsection{bla}
\test
\end{frame}
\end{document}
Der erste Test liefert ein "Nein!". Aber wenn ich dich richtig verstanden habe, möchtest du an dieser Stelle ein "Ja!".
Das wäre möglicherweise machbar, wenn man sich eines weiteren LaTeX-Durchlaufs bedient. Allerdings macht das die Sache nicht gerade einfacher.
PS: Ich habe noch zwei mal \global ergänzt (s.o.), damit es "sicherer" wird, sonst hast du Probleme bei der nächsten Folie.