\usepackage{calc}

\newlength{\boxw}
\newlength{\boxh}
\newlength{\boxroundness}
\newlength{\shadowsize}
\newlength{\tmpa}

\setlength{\shadowsize}{6pt}
\setlength{\boxroundness}{3pt}

\newsavebox{\shadowblockbox}

\newenvironment{shadowblock}[1]
{\begin{lrbox}{\shadowblockbox}\begin{minipage}{#1}}
{\end{minipage}\end{lrbox}
\settowidth{\boxw}{\usebox{\shadowblockbox}}
\settodepth{\tmpa}{\usebox{\shadowblockbox}}
\settoheight{\boxh}{\usebox{\shadowblockbox}}
\addtolength{\boxh}{\tmpa}
\addtolength{\boxw}{\boxroundness * 2}
\addtolength{\boxh}{\boxroundness * 2}

\begin{tikzpicture}
    \foreach \x in {0, .05, ..., 1}
    {
        \setlength {\tmpa}{\shadowsize * \real{\x}}
        \fill[xshift=\shadowsize - 1pt, yshift=\shadowsize + 1pt, black, opacity=.04, rounded corners=\boxroundness]
        (\tmpa, \tmpa) rectangle +(\boxw - \tmpa - \tmpa, \boxh - \tmpa - \tmpa);
        \filldraw[fill=gray!40, draw=black!10, rounded corners=\boxroundness]
        (0, 0) rectangle (\boxw, \boxh);
        \draw node [xshift=\boxroundness, yshift=\boxroundness, inner sep=0pt, outer sep=0pt, anchor=south west]
        (0, 0) {\usebox{\shadowblockbox}};
    }
\end{tikzpicture}
}

%
% We prepare a transparent box first.
%
%\newsavebox{\mybox}
%\begin{lrbox}{\mybox}
%\begin{shadowblock}{5cm}
%This is a block of text with a transparent
%shadow!
%\end{shadowblock}
%\end{lrbox}

%\raisebox{0cm}[0pt][0pt]{\makebox[0pt]{\usebox{\mybox}}}
%{\usebox{\mybox}}

%\begin{textblock}{4}(2,5.2)
%\begin{shadowblock}{4cm}
%And a small one on top of it.
%\end{shadowblock}
%\end{textblock}
