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?

**Edit**: Apparently I misquoted my source, and this is only known stably (which makes sense, in light of Joel's answer and Tom's comments on it).