multicol
doesn't support floats but if you don't mind a bit of hand adjustment it's possible to get most arrangements. If you are working on one book for several weeks such hand adjustments are quite feasible, if automatically typesetting thousands of documents an hour from some catalogue database, less so.
Basically let TeX decide where the natural column break is, then force a break at that point and add some space to take the image and caption.

\documentclass{article}
\usepackage{multicol,graphicx,capt-of}
\def\z{\stepcounter{enumi}\Roman{enumi} one two three four five six seven eight nine ten. }
\begin{document}
\begin{multicols}{3}
\z\z\z\z\z\z\z\z\z\z \z\z\z\z\z\z\z\z\z\z
Red Green blue yellow. Red Green blue yel-{\parfillskip0pt\par}
\columnbreak
\vspace*{16\baselineskip}
\noindent
\begin{picture}(0,0)
\put(0,110){\parbox{\dimexpr2\columnwidth+\columnsep}{\centering
\includegraphics[width=\linewidth]{example-image}
\captionof{figure}{an image}}}
\end{picture}%
low.
\z\z\z\z\z\z\z\z\z\z \z\z
Apples oranges ba-{\parfillskip0pt\par}
\columnbreak
\vspace*{16\baselineskip}
\noindent nanas.
\z\z\z\z\z\z\z\z
\z\z\z\z\z\z\z\z\z\z \z\z\z\z\z\z\z\z\z\z
\z\z\z\z\z\z\z\z\z\z \z\z\z\z\z\z\z\z\z\z
\end{multicols}
\end{document}