The simplest way is to use an array.
Code:
\begin{array}{cccccc}
\tilde e: & N_1+N_2 & \overset{\lambda}{\longrightarrow} & \tilde L & \overset{\rho}\twoheadrightarrow & Q\\
&\llap{$\sigma_i$}\downarrow &&\llap{$\tau_i$}\downarrow &&\llap{$\gamma_i$}\downarrow\\
e_i: & N_i & \overset{\chi_i}{\longrightarrow} & L_i & \overset{\pi_i}{\longrightarrow} & Q_i
\end{array}
gives
PFG/TikZ provides a better quality.
Code:
\usetikzlibrary{positioning,arrows}
\begin{tikzpicture}[auto,>=stealth']
\node (N1+N2) {$\llap{$\tilde e:{}$}N_1+N_2$};
\node[right=of N1+N2] (L) {$\tilde L$};
\node[right=of L] (Q) {$Q$};
\node[below=of N1+N2] (Ni) {$\llap{$e_i:{}$}N_i$};
\node[below=of L] (Li) {$L_i$};
\node[below=of Q] (Qi) {$Q_i$};
\draw[->] (N1+N2) -- node[swap] {$\sigma_i$} (Ni);
\draw[->] (L) -- node[swap] {$\tau_i$} (Li);
\draw[->] (Q) -- node[swap] {$\gamma_i$} (Qi);
\draw[->] (N1+N2) -- node {$\lambda$} (L);
\draw[->>] (L) -- node {$\rho$} (Q);
\draw[->] (Ni) -- node {$\tau_i$} (Li);
\draw[->>] (Li) -- node {$\pi_i$} (Qi);
\path[use as bounding box] (-1.5,0) rectangle (0,0);
\end{tikzpicture}
gives
See also this thread for links.