You should issue the commands \fontsize{8}{9.5}\selectfont after the \tableofcontents command (and other frontmatter commands) but before the first chapter command. Near the end of the document, i.e., just before the bibliography, you also need to issue the command \normalsize to restore the font's size to \normalsize, be that 10pt, 11pt, or 12pt (or any other value).
In the following MWE, the command \eightptsize encases the fontsize-changing commands:
\documentclass[a4paper,12pt]{book} % basic font size in this MWE: 12pt
\usepackage[margin=2.5cm]{geometry}
\usepackage{lipsum}
% command to switch to 8pt on a baselineskip of 9.5pt
\newcommand{\eightptsize}{%
\fontsize{8}{9.5}\selectfont}
\begin{document}
\tableofcontents
\eightptsize
\chapter{In the Beginning}
\section{Section 1}
\subsection{Some subsection}
As posited by \cite{x}, we can't know for sure \ldots
\lipsum[1]
\subsection{Another subsection}
\lipsum[2]
%% back to 'normalsize' font size before start of bibliography
\normalsize
\begin{thebibliography}{9}
\bibitem{x}Variable, Random, 2011, ``On Randomness,'' \emph{Journal of Randomness},
Vol.~1, No.~1, pp.\ 1--2.
\end{thebibliography}
\end{document}
Where does the value of 9.5pts for \baselineskip come from, you may ask? I've taken it from the default definition of this variable for the case that normalsize is 10pt, in which case the command \footnotesize switches to an 8pt font size with a baselineskip of 9.5pt. Of course, you may prefer either more or less leading than the TeX default.
Edit: Addendum -- How to deal with the font size for footnotes in a text set in 8pt?
It occurred to me that even though you've specified that nothing should change except for the fontsize of the text, you really should be willing to make an exception for the case of footnotes. (I assume you'll have some in a book-length document!) The reason for this is that if your documentclass sets \normalsize to 10pt, 11pt, or 12pt, respectively, footnote text will be set in a font size of 8pt, 9pt, and 10pt. Common (near-universal?!) typographic practice, however, is to have footnotes be set in a fontsize that's 1 or 2 points smaller that \normalsize. Assuming, for instance, that \normalsize might be 12pt, you would get footnotes set in 10pt even though the text itself is set in 8pt: this is going to look weird, to say the least. The solution is to do a \renewcommand on the LaTeX macro named, what else, \footnotesize. In the code of the MWE above, you would have to replace the definition of the \eightptsize macro with the following code (the \makeatletter and \makeatother commands are required because a couple of the commands being reset contain the "special" character @):
\makeatletter
\newcommand{\eightptsize}{
\fontsize{8}{9.5}\selectfont
\renewcommand\footnotesize{%
\@setfontsize\footnotesize{7}{8}%
\abovedisplayskip 5\p@ \@plus2\p@ \@minus3\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 2\p@ \@plus\p@ \@minus1\p@
\belowdisplayskip \abovedisplayskip
}
}
\makeatother
The main change is to set the footnote font size to 7pt, i.e., 1pt less than the font size of the text. The rest of the code is cribbed unashamedly from the definition in the book10.clo file. :-)
Edit: Second Addendum -- How to fix up the class file mwrep?
For some reason, the class file you use (mwrep.cls) does not specify a default font size for the headers of subsections, subsubsections, paragraphs, and subparagraphs. To fix this, you should make a copy of this class file, name it (say) mwrep-kronos.cls, find the four instances of the command \SetSectionFormatting{ subsection, subsection, paragraph, subparagraph} and, within these commands, the instances of the commands \FormatHangHeading{} (twice) and \FormatRunInHeading{} (twice). Insert the instruction \normalsize in each of the 4 pairs of empty curly braces. Save the new class file and, if necessary, update the TeX filename database. (By the way, you'll probably need superuser privileges to copy/rename the file and update the filename database.) Then specify the class file mwrep-kronos as the argument of the \docummentclass command and you should be all set to go.
\baselineskip-- 12pt, 14pt, etc? Finally, you mention that the text of the document should be set at 8pt -- do you have a value in mind for the\baselineskipat this new size? – Mico Sep 1 '11 at 22:22