I guess the proper thing to do is to send a patch to the beamer developers that modifies \slideentry (in beamerbasenavigation.sty) so that it uses three templates (before, current, after).
However, here is a solution that doesn't modify any internal macros.
\documentclass{beamer}
\usetheme{Singapore}
\useoutertheme{miniframes}
\usepackage{etoolbox}
% a flag that tells us how the circles should be drawn
\newif\ifnavbeforecurrent
% reset the flag before every navigation bar
\pretocmd\insertnavigation{\navbeforecurrenttrue}{}{}
% change the circle drawing code so that it changes based on the flag
\defbeamertemplate*{mini frame in current subsection}{changing}[1][50]
{%
\begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
\pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
\ifnavbeforecurrent
\pgfusepath{fill,stroke}
\else
\pgfusepath{stroke}
\fi
\end{pgfpicture}%
}
\setbeamertemplate{mini frame in current subsection}[changing]
% after the circle for the current frame is drawn, change the flag
\defbeamertemplate*{mini frame}{changing}
{%
\begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
\pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
\pgfusepath{fill,stroke}
\end{pgfpicture}%
\global\navbeforecurrentfalse
}
\setbeamertemplate{mini frame}[changing]
\begin{document}
\section{A section}
\subsection{A subsection}
\frame{...}
\frame{...}
\frame{...}
\subsection{A second subsection}
\frame{...}
\frame{...}
\frame{...}
\end{document}

\documentclass{beamer}\usetheme{Singapore}\useoutertheme{miniframes}? I'm not sure if I understand the question. – percusse Jun 26 '12 at 11:37