This could be done more elegantly, but it works nonetheless. Based on the answer to Is it possible to fill the complement of (A union B union C) with a solid color but the remaining regions remain transparent?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\tikzstyle{reverseclip}=[insert path={(current page.north east) --
(current page.south east) --
(current page.south west) --
(current page.north west) --
(current page.north east)}
]
\tikzset{
venn0/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (30:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (-210:0.7cm) circle [radius=1cm] [reverseclip];
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
venn1/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm];
\path [clip] (30:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (-210:0.7cm) circle [radius=1cm] [reverseclip];
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
venn2/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (30:0.7cm) circle [radius=1cm];
\path [clip] (-210:0.7cm) circle [radius=1cm] [reverseclip];
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
venn3/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (30:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (-210:0.7cm) circle [radius=1cm];
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
venn4/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (30:0.7cm) circle [radius=1cm] ;
\path [clip] (-210:0.7cm) circle [radius=1cm] ;
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
venn5/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm];
\path [clip] (30:0.7cm) circle [radius=1cm] [reverseclip];
\path [clip] (-210:0.7cm) circle [radius=1cm];
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
venn6/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm];
\path [clip] (30:0.7cm) circle [radius=1cm] ;
\path [clip] (-210:0.7cm) circle [radius=1cm] [reverseclip];
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
venn7/.code={
\begin{scope}
\begin{pgfinterruptboundingbox}
\path [clip] (-90:0.7cm) circle [radius=1cm];
\path [clip] (30:0.7cm) circle [radius=1cm] ;
\path [clip] (-210:0.7cm) circle [radius=1cm];
\end{pgfinterruptboundingbox}
\fill [orange] (-2,-2) rectangle (2,2);
\end{scope}
},
vennoutlines/.code={
\draw (-90:0.7cm) circle [radius=1cm];
\draw (30:0.7cm) circle [radius=1cm];
\draw (-210:0.7cm) circle [radius=1cm];
}
}
\noindent%
\foreach \a in {0,1}
\foreach \b in {0,1}
\foreach \c in {0,1}
\foreach \d in {0,1}
\foreach \e in {0,1}
\foreach \f in {0,1}
\foreach \g in {0,1}
\foreach \h in {0,1}{%
\begin{tikzpicture}[remember picture, scale=0.2]
\ifnum\a=0
\tikzset{venn0}
\fi
\ifnum\b=0
\tikzset{venn1}
\fi
\ifnum\c=0
\tikzset{venn2}
\fi
\ifnum\d=0
\tikzset{venn3}
\fi
\ifnum\e=0
\tikzset{venn4}
\fi
\ifnum\f=0
\tikzset{venn5}
\fi
\ifnum\g=0
\tikzset{venn6}
\fi
\ifnum\h=0
\tikzset{venn7}
\fi
\tikzset{vennoutlines}
\end{tikzpicture}
}
\end{document}
\fillcommands to shade each of the 8 individual regions. Each of the individual\fillcommands needs to be surrounded by anifconditional that selects whether the given region is shaded. Theifconditional should only shade the region if the given region's number is in a list. Then you can either provide a list of regions to shade, or generate all possible combinations of the list. – Peter Grill Aug 16 '12 at 14:34