Pgfplots 1.5.1 comes with a patch type=polygon: the idea is to provide vertices and a connectivity matrix, some 3d view angle and pgfplots does the rest - including z buffer sorting.
Pgfplots defines the "depth" of one polygon to be the mean of the depth of its vertices and sorts polygons according to the polygon depth ("painters algorithm").
Here is an example taken from the pgfplots 1.5.1 manual, section "5.6 Patch plots library", page 311:

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view/h=120,xlabel=$x$,ylabel=$y$]
\addplot3[
opacity=0.5,
table/row sep=\\,
patch,
patch type=polygon,
vertex count=5,
patch table with point meta={%
% pt1 pt2 pt3 pt4 pt5 cdata
0 1 7 2 2 0\\
1 6 5 5 5 1\\
1 5 4 2 7 2\\
2 4 3 3 3 3\\
}
]
table {
x y z\\
0 2 0\\% 0
2 2 0\\% 1
0 1 3\\% 2
0 0 3\\% 3
1 0 3\\% 4
2 0 2\\% 5
2 0 0\\% 6
1 1 2\\% 7
};
% replicate the vertex list to show \coordindex:
\addplot3[only marks,nodes near coords=\coordindex]
table[row sep=\\] {
0 2 0\\ 2 2 0\\ 0 1 3\\ 0 0 3\\
1 0 3\\ 2 0 2\\ 2 0 0\\ 1 1 2\\
};
\end{axis}
\end{tikzpicture}
\end{document}
the first \addplot command (up to the semicolon ;) provides two tables: the argument for patch table with point meta contains connectivity information, i.e. zero-based integer indices into the other table. Each row in that connectivity table makes up one polygon. The number of vertices per polygon is fixed by vertex count=5, although it is permitted that a polygon has the same vertex multiple times. The last column of the connectivity table here is color data; it is mapped linearly into the current colormap to control which color is used to fill the patch. The outer table is the table of vertices (8 here).
The second \addplot3 command is just to add a nodes near coords plot on top of the rest (i.e. to show labels for every vertex).
The patch plots library features z buffering by means of z buffer=sort, color mapping, and 3d axis support.
Note that annotations on top of the plot can be added by means of TikZ drawing instructions.
\usetikzlibrary{backgrounds}in your preamble and put the polygon drawing commands into\begin{scope}[on background layer] ...... \end{scope}. See the PGF/TikZ manual for more layering capabilities. – percusse Feb 21 '12 at 11:15