Using subcaption alone. If we can use \hspace{} between two adjacent subfigure environments horizontally, then we have to be allowed to use vspace{} between two adjacent subfigure environments vertically. I don't know whether or not this philosophy is correct. But it seems to be correct, doesn't it?
In the following example, I deliberately choose different size for each image just for the sake of generality. But you can change to suit your own preferences.
\documentclass[preview,border=12pt]{standalone}
\usepackage[demo]{graphicx}
\usepackage{subcaption}
\begin{document}
Beauty without intelligence is a masterpiece painted on a toilet paper.
\begin{figure}[hbtp]
\centering
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[width=4cm]{foo}
\caption{foo}
\label{fig:foo}
\end{subfigure}\hspace{12pt}
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[width=3cm]{goo}
\caption{goo}
\label{fig:goo}
\end{subfigure}\vspace{12pt}
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[height=4cm]{hoo}
\caption{hoo}
\label{fig:hoo}
\end{subfigure}\hspace{24pt}
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[height=3cm]{ioo}
\caption{ioo}
\label{fig:ioo}
\end{subfigure}
\caption{The group of foo, goo, hoo, and ioo.}
\label{fig:group}
\end{figure}
\end{document}

Homogeneous Case
When all of your images have the same size, then the output looks much better as follows.
\documentclass[preview,border=12pt]{standalone}
\usepackage[demo]{graphicx}
\usepackage{array}
\usepackage{subcaption}
\begin{document}
Beauty without intelligence is a masterpiece painted on a toilet paper.
\begin{figure}[hbtp]
\centering
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[width=4cm]{foo}
\caption{foo}
\label{fig:foo}
\end{subfigure}\hspace{12pt}
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[width=4cm]{goo}
\caption{goo}
\label{fig:goo}
\end{subfigure}\vspace{12pt}
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[width=4cm]{hoo}
\caption{hoo}
\label{fig:hoo}
\end{subfigure}\hspace{12pt}
\begin{subfigure}[c]{.4\linewidth}
\centering
\includegraphics[width=4cm]{ioo}
\caption{ioo}
\label{fig:ioo}
\end{subfigure}
\caption{The group of foo, goo, hoo, and ioo.}
\label{fig:group}
\end{figure}
\end{document}

\documentclass...until\end{document}. If you use thegraphicxpackage I recommend using it in the MWE as follows\usepackage[demo]{graphicx}– masu Nov 13 '13 at 23:47\hfillcommand before the first subfigure. That command starts a paragraph and is placed at the start of it. Other lines are not similarly affected because horizontal space at linebreaks is discarded. The \hfill at the end of the paragraph (just before the caption) is also discarded, but not the space before it (end of previous line). This can cause a slight distortion of the alignment. Omit these spaces by placing%at the ends of all the subfigure lines. – Dan Nov 14 '13 at 20:44