Eine Möglichkeit ist die Nutzung von TikZ:
\documentclass{scrartcl}
\usepackage{tikz}
\newcommand\BG[2]{% Syntax: \BG{<hintergrundfarbe>}{<text>}
\tikz[baseline=(n.base)]% vertikale Ausrichtung der Buchstabenbox
\node[
inner sep=0pt,outer sep=0pt,% kein zusätzlicher Platz in Buchstabenbox
fill=#1,% Füllfarbe
font=\strut% gleiche Höhe und Tiefe der Buchstabenboxen
](n){#2};%
}
\begin{document}
Ein Testtext \par
\BG{blue!30}{E}\BG{yellow}{i}\BG{blue!30}{n} Testtext\par
\ttfamily
Ein Testtext \par
\BG{blue!30}{E}\BG{yellow}{i}\BG{blue!30}{n} Testtext
\end{document}
![alt text][1]
Mit der Idee von @cis lässt sich das auch mit `\colorbox` lösen, wenn man `\fboxsep` lokal gleich Null setzt und mit `\strut` wieder für gleichhohe Boxen sorgt:
\documentclass{scrartcl}
\usepackage{xcolor}
\newcommand\BG[2]{% Syntax: \BG{<hintergrundfarbe>}{<text>}
{\setlength\fboxsep{0pt}\colorbox{#1}{#2\strut}}%
}
\begin{document}
Ein Testtext \par
\BG{blue!30}{E}\BG{yellow}{i}\BG{blue!30}{n} Testtext\par
\ttfamily
Ein Testtext \par
\BG{blue!30}{E}\BG{yellow}{i}\BG{blue!30}{n} Testtext
\end{document}
[1]: http://texwelt.de/wissen/upfiles/buchstaben_1.png