Theoretisch erreichst Du bereits mit
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\leftmark}
\fancyhead[L]{\rightmark}
\fancyfoot[C]{\thepage}
\setlength{\headheight}{15pt}
\begin{document}
\section{Section1}
\newpage
\section{Section2}
\subsection{Subsection2.1}
\newpage
\subsection{Subsection2.2}
\end{document}
das gewünschte. Wie zu erwarten ist, trägt Seite 1 nur die *section*-Überschrift im Kolumnentitel (hier in der Kopfzeile). Vielleicht etwas überraschen ist aber auch auf Seite 2 kein *subsection* im Kolumnentitel zu finden. Die Ursache dafür ist einfach: LaTeX verwendet für `\rightmark` das TeX-Primitiv `\firstmark`. Dieses gibt die *erste* Marke, die auf der Seite gesetzt wird, wieder. Die erste Marke wird von `\section` gesetzt. Dabei ist das linke Element die Überschrift von `\section` und das rechte Element ist leer. Damit ist `\firstmark` in diesem Fall leer.
Noch seltsamer wird es, wenn man ein etwas komplexeres Dokument hat, bei dem dann auf einer Seite erst ein Unterabschnitt und dann ein Abschnitt beginnt:
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\leftmark}
\fancyhead[L]{\rightmark}
\fancyfoot[C]{\thepage}
\usepackage{blindtext}
\begin{document}
\section{Section1}
\Blindtext[5]
\section{Section2}
\blindtext
\subsection{Subsection2.1}
\blindtext
\subsection{Subsection2.2}
\blindtext
\section{Section3}
\Blindtext[2]
\subsection{Subsection 3.1}
\Blindtext[5]
\end{document}
Wenn Du Dir hier einmal Seite 3 anschaust, dann hast Du dort in der Kopfzeile links »2.2 Subsection2.2« und rechts »3 Section 3« stehen, obwohl auf der Seite weiter unten auch noch »3.1 subsection 3.1« beginnt. Das finde ich eher verwirrend.
Um beide Probleme zu lösen, schlage ich einen Wechsel zum KOMA-Script-Paket `scrlayer-scrpage` vor, das in der [KOMA-Script-Anleitung](http://www.komascript.de/scrguide) und im [KOMA-Script-Buch](http://www.komascript.de/komascriptbuch) dokumentiert ist:
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage[autooneside=false,headsepline,markcase=noupper]{scrlayer-scrpage}
\automark[subsection]{section}
\pagestyle{scrheadings}
\clearscrheadfoot
\ofoot[\pagemark]{\pagemark}
\ihead{\ifstr{\rightbotmark}{\leftmark}{}{\rightbotmark}}
\ohead{\leftmark}
\usepackage{blindtext}
\makeatletter
% Damit die letzte (\botmark) statt der ersten (\firstmark) Marke auf
% einer Seite für die "rechte Marke" genommen wird:
\providecommand*{\rightbotmark}{\expandafter\@rightmark\botmark\@empty\@empty}
\makeatother
\begin{document}
\section{Section1}
\Blindtext[5]
\section{Section2}
\blindtext
\subsection{Subsection2.1}
\blindtext
\subsection{Subsection2.2}
\blindtext
\section{Section3}
\blindtext
\subsection{Subsection 3.1}
\Blindtext[5]
\end{document}
Damit hast Du nun immer die unterste *subsection*-Überschrift der Seite links oben. Das führst sowohl dazu, dass auf Seite 2 bereits das Feld belegt ist und auf Seite 3 nicht mehr 2.2, sondern 3.1 verwendet wird.
Noch besser fände ich allerdings, wenn Du in diesem Beispiel `\ohead` und `\ihead` vertauschen würdest, also:
\ohead{\ifstr{\rightbotmark}{\leftmark}{}{\rightbotmark}}
\ihead{\leftmark}
verwenden würdest.
Es sei noch darauf hingewiesen, dass bei einem Wechsel zu `scrartcl` als Klasse, Option `headsepline` bereits bei `\documentclass` angegeben werden sollte, damit das Paket `typearea` einen angepassten Satzspiegel berechnen kann. Außerdem kann uns und sollte dann Option `markcase` entfallen, da die KOMA-Script-Klassen bereits von sich aus auf diesen unsäglichen Versalsatz im Kolumnentitel verzichten. Siehe dazu ggf. auch die KOMA-Script-Anleitung oder das Buch.
Bei Verwendung von `scrreprt` und `\chapter` (was sehr zu empfehlen wäre, wenn man vor `\section` ansonsten immer ein `\clearpage` oder `\newpage` von Hand einfügen würde, was leider sehr viele Anwender machen, die `scrreprt` nicht kennen) würde sich lediglich die `\automark`-Anweisung zu
\automark[section]{chapter}
ändern. Außerdem bräuchte man dann noch:
\makeatletter
% damit \leftmark voll expandierbar ist (wird für \ifstr benötigt)
\renewcommand*{\@seccntformat}[1]{%
\othersectionlevelsformat{#1}{}{\csname the#1\endcsname}%
}
\makeatother
Das war's dann schon.
BTW: Diese Antwort basiert u. a. auf einem [Beitrag von Elke auf matheplanet](http://www.matheplanet.de/matheplanet/nuke/html/viewtopic.php?post_id=1433233&topic=194440) (Anmerkung: Dieser Link benötigt leider JavaScript).