It seems to me that the following solution is a counterexample to @Herbert's claim that "an automatic solution is not possible" ... It is based on (i) @Werner's answer, (ii) my proposal to use \psclip in a comment on his answer, and (iii) his subsequent response.
\rputover has exactly the same format as \rput, but its content covers any objects in the argument of \coverable.
\documentclass{article}
\usepackage{pstricks,pst-node}
\makeatletter
\newcounter{pstfiglabel}
\def\rputover{%
\@ifnextchar[%
{\@ifnextchar({\@putoveror}{\@putoveron}}
{\@ifnextchar({\@putovernn}{\@putovernr}}
}
\def\@putoveror[#1]#2(#3,#4)#5{%
\rput[#1]{#2}(#3,#4){\psDefBoxNodes{label\thepstfiglabel}{\fbox{#5}}}
\stepcounter{pstfiglabel}%
}
\def\@putoveron[#1](#2,#3)#4{%
\rput[#1](#2,#3){\psDefBoxNodes{label\thepstfiglabel}{\fbox{#4}}}
\stepcounter{pstfiglabel}%
}
\def\@putovernr#1(#2,#3)#4{%
\rput{#1}(#2,#3){\psDefBoxNodes{label\thepstfiglabel}{\fbox{#4}}}
\stepcounter{pstfiglabel}%
}
\def\@putovernn(#1,#2)#3{%
\rput(#1,#2){\psDefBoxNodes{label\thepstfiglabel}{\fbox{#3}}}
\stepcounter{pstfiglabel}%
}
\def\coverable#1{%
\newcounter{coverable}
\psclip{%
\pscustom[linestyle=none,fillstyle=solid]{
\loop
\psline[liftpen=2](label\thecoverable:bl)(label\thecoverable:br)(label\thecoverable:tr)(label\thecoverable:tl)(label\thecoverable:bl)
\stepcounter{coverable}
\ifnum\value{coverable}<\value{pstfiglabel}
\repeat
\psline[liftpen=2](-\maxdimen,-\maxdimen)(-\maxdimen,\maxdimen)(\maxdimen,\maxdimen)(\maxdimen,-\maxdimen)
}%
}%
#1
\endpsclip
}
\makeatother
\begin{document}
\begin{pspicture}(2,2)
\fboxrule=0pt
\fboxsep=2pt
\psframe[fillstyle=solid,fillcolor=blue!40,linestyle=none,linewidth=0pt](0,0)(2,2)
\pscurve[fillstyle=solid,fillcolor=red!30,linestyle=none](0,2)(1,1)(2,2)
\rputover(1,1){\sffamily label}%
\rputover{45}(1.6,1.6){\sffamily label}%
\rputover[l](.5,0.5){\sffamily label}%
\coverable{
\psline(0,0)(2,2)
\pscurve[linecolor=blue](1,0)(1.5,0.5)(0.5,1.5)(1,2)
\psline(1,0)(2,2)
}
\end{pspicture}
}
\end{document}
The output follows.

Here's how it works. \rputover, in addition to doing an \rput, also gets the coordinates of the object being put. \coverable clips out of the objects in its argument the boxes containing the objects in the \rputovers, leaving 'holes' for these objects. If you replace \pscustom[linestyle=none] with \pscustom[linestyle=none,fillstyle=solid] in the definition of \coverable you will see the clip area, as in the following image.
