Any smooth $k$-manifold $M$ comes with a well-defined map $f:M\rightarrow BGL_{k}(\mathbb{R})$ (up to homotopy) classifying its tangent bundle.  Since $GL_{k}(\mathbb{R})$ deformation-retracts onto $O_k$, then $BGL_{k}(\mathbb{R})\simeq BO_k$, which is a cute way (though it's certainly overkill) of proving that every smooth manifold admits a Riemannian metric.  An almost-complex structure, on the other hand, is equivalent to a reduction of the structure group from $GL_{2n}(\mathbb{R})$ to $GL_n(\mathbb{C})$, which is the same as asking for a lift of the classifying map through $BU_n\simeq BGL_n(\mathbb{C})\rightarrow BGL_{2n}(\mathbb{R})$.


> Can we detect the nonexistence of a
> lift entirely using characteristic
> classes?  If not, what else goes into the classification?

I'd imagine these don't suffice themselves.  I know that $w_{2n}(TM) \equiv_2 c_n(TM)$, so this holds in the universal case $H^\ast(BO_{2n};\mathbb{Z}/2) \rightarrow H^\ast(BU_n;\mathbb{Z}/2)$.  And certainly there are necessary conditions like $w_1(TM)=0$ (which of course just means that $TM$ is an orientable bundle, which is the same as asking that $M$ be an orientable manifold).  But I have no idea of what sufficient conditions would look like.  I've heard that this problem is indeed solved.  Maybe it takes some characteristic class & cohomology operation gymnastics, or maybe it even needs extraordinary characteristic classes.  Or maybe there's yet another ingredient in the classification?