Here you go. Special thanks again to Brandon Kuczenski for making me aware of arrayjobx in this answer.
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{arrayjobx}
\newcommand{\multiclip}[3]{% number of clippings, clipping commands (connect with &), draw commands
\newarray\temp%
\readarray{temp}{#2}%
\foreach \x in {1,...,#1}%
{ \begin{scope}%
\pgfmathtruncatemacro{\xt}{\x}%
\temp(\xt)%
#3%
\end{scope}%
}%
\delarray\temp%
}
\begin{document}
\fbox{\begin{tikzpicture}
\multiclip{2}{\clip (-0.8, -0.8) rectangle (0.8,0.8);&\clip (0,0) circle (1);}{\fill[color=red](-10,-10)rectangle(10,10);}
\end{tikzpicture}}
\fbox{\begin{tikzpicture}
\multiclip{5}{\clip(-1,-1)circle(0.8); &\clip(-1,1)circle(0.8); &\clip(1,-1)circle(0.8); &\clip(1,1)circle(0.8); &\clip(0,0)circle(0.8);}{\fill[color=red](-10,-10)rectangle(10,10); \draw(-5,-5)-- (5,5); \draw(-1,-1)rectangle(1,1);}
\end{tikzpicture}}
\end{document}
The command \multiclip takes three arguments:
- the number of areas to clip
- The cammands for clipping (you have to specify whole commands, e.g
\clip (0,0) circle (1);. In princple, one could alter the code to \clip \temp(\xt); so one would only have to write (0,0) circle (1). But in the former variant, you can decide do e.g. draw some of the clip areas). The single commands have to be concatenated via &.
- the drawing commands that will appear in all clipping areas.

Edit 1: For an intersection clip, you can either use nested scopes with clip commands and put the draw commands into the innermost scope, or you can simply give the clip commands in succession. However, the bounding box is strang in any case. I constructed an example with 5 overlapping circles. When done manually the large bounding box results. When done via a macro however, the bounding box is the maximal one, e.g. in your example a box of 20 x 20 caused by the \fill (-10,-10) -- (10,10);. I have no idea why that happens, but you can fix it via using a \useasboundingbox before. Here are the final commands, \unionclip and \intersectionclip:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usepackage{arrayjobx}
\usepackage{xifthen}
\newcommand{\unionclip}[3]{% number of clippings, clipping commands (connect with &), draw commands
\newarray\temp%
\readarray{temp}{#2}%
\foreach \x in {1,...,#1}%
{ \begin{scope}%
\pgfmathtruncatemacro{\xt}{\x}%
\temp(\xt)%
#3%
\end{scope}%
}%
\delarray\temp%
}
\newcommand{\intersectionclip}[3]{% number of clippings, clipping commands (connect with &), draw commands
\newarray\temp%
\readarray{temp}{#2}%
%\begin{scope}%
\foreach \x in {1,...,#1}%
{ \pgfmathtruncatemacro{\xt}{\x}%
\temp(\xt)%
}
#3%
%\end{scope}%
\delarray\temp%
}
\begin{document}
\fbox{\begin{tikzpicture}
\unionclip{2}
{\clip (-0.8, -0.8) rectangle (0.8,0.8);&
\clip (0,0) circle (1);}
{\fill[color=green](-10,-10)rectangle(10,10);}
\end{tikzpicture}}
\fbox{\begin{tikzpicture}
\unionclip{5}
{\clip(-1,-1)circle(0.8);&
\clip(-1,1)circle(0.8);&
\clip(1,-1)circle(0.8);&
\clip(1,1)circle(0.8);&
\clip(0,0)circle(0.8);}
{\fill[color=green](-10,-10)rectangle(10,10);
\draw[thick](-5,-5)-- (5,5);
\draw[densely dashed,ultra thick](-1,-1)rectangle(1,1);}
\end{tikzpicture}}
\begin{tikzpicture}
\draw[fill=green,fill opacity=0.25](-1,-1)circle(2.5);
\draw[fill=green,fill opacity=0.25](-1,1)circle(2.5);
\draw[fill=green,fill opacity=0.25](1,-1)circle(2.5);
\draw[fill=green,fill opacity=0.25](1,1)circle(2.5);
\draw[fill=green,fill opacity=0.25](0,0)circle(2.5);
\draw[densely dashed,ultra thick](-1,-1)rectangle(1,1);
\end{tikzpicture}
\fbox{
\begin{tikzpicture}
\clip(-1,-1)circle(2.5);
\clip(-1,1)circle(2.5);
\clip(1,-1)circle(2.5);
\clip(1,1)circle(2.5);
\clip(0,0)circle(2.5);
\fill[color=green](-10,-10)rectangle(10,10);
\draw[densely dashed,ultra thick](-1,-1)rectangle(1,1);
\end{tikzpicture}}
\fbox{\begin{tikzpicture}
\useasboundingbox (-1.5,-1.5) rectangle (1.5,1.5);
\intersectionclip{2}
{\clip (-0.8, -0.8) rectangle (0.8,0.8);&
\clip (0,0) circle (1);}
{\fill[color=green](-10,-10)rectangle(10,10);}
\end{tikzpicture}}
\fbox{\begin{tikzpicture}
\useasboundingbox (-1.5,-1.5) rectangle (1.5,1.5);
\intersectionclip{5}
{\clip(-1,-1)circle(2.5);&
\clip(-1,1)circle(2.5);&
\clip(1,-1)circle(2.5);&
\clip(1,1)circle(2.5);&
\clip(0,0)circle(2.5);}
{\fill[color=green](-10,-10)rectangle(10,10);
\draw[densely dashed,ultra thick](-1,-1)rectangle(1,1);}
\end{tikzpicture}}
\end{document}

\clip (-0.8, -0.8) rectangle (0.8,0.8);\clip (0,0) circle (1);– percusse Jun 05 '12 at 00:25