Here are a few other remarks, to add to the existing answer. I will primarily discuss Poincare duality, and how it is simpler to construct using cohomology rather than homology. Although this is a rather particular thing to focus on, it is quite important, and also quite nicely illustrates some more general aspects of homology vs. cohomology.
I will begin by discussing the homology side of things, since this is the most geometric setting (although, as we will see, one confronts more technical difficulties if one tries to work directly with homology):
The basic ingredient of Poincare duality, phrased in terms of homology, is the following: if $M$ is a connected closed oriented $n$-manifold, then there is a natural bilinear map $H_i \times H_j \to H_{i + j - n}$, sometimes written $z_1\times z_2 \mapsto z_1\cdot z_2$, given by the intersection of cycles. (Here I will implicitly work with $\mathbb Q$ coefficients, to avoid torsion phenomena, which would complicate the discussion somewhat.)
The direct construction of this intersection pairing is somewhat non-trivial if you are working from first principles: you have to find reasonably nice representatives of the two cycles to be paired that meet transversally, then interpret the intersection as a homology class, and finally check that the answer is well-defined independent of the original choice of representatives.
One idea for simplifying this process is as follows: rather than directly intersecting two cycles, say $z_1$ and $z_2$, on the given manifold $M$, we can form the product cycle $z_1\times z_2$ on $M\times M$, and intersect that with the diagonal $\Delta_M \subset M\times M$.
As a justification for this, note that a moment's thought will show at least that if we were forming just the intersection of subsets $S_1$ and $S_2$ of $M$, then we would get the same answer by intersecting $S_1\times S_2$ with $\Delta_M$.
Does this carry over to intersecting cycles? Well, we can think of $z_1\times z_2$ as a cycle on $M\times M$ via Eilenberg–Zilber/Künneth. And so if we know how to form intersection with the diagonal $\Delta_M$, we can then intersect $z_1\times z_2$ with $\Delta_M$ (thought of as a cycle on $M\times M$) to obtain a cycle which physically lives on $\Delta_M$ (now thought of as a submanifold of $M$).
The problem is that we now want to identify this cycle $(z_1\times z_2)\cdot \Delta_M$ as a cycle on the original manifold $M$. Of course we have the natural isomorphism $M \cong \Delta_M$ given by the diagonal embedding of $M$ into $M\times M$, but we don't have a general mechanism via which we can take a cycle which technically lives in the homology of $M\times M$, but which happens to be supported on $\Delta_M$, and move it to $M$. In this particular case we could try to do something by hand, as it were, but it is normally easier if a construction can be made via general principles rather than by ad hoc methods.
Cohomology presents us with a way around both difficulties: how to actually define the intersection $(z_1\times z_2)\cdot \Delta_M$, and, once it's defined, how to move the resulting cycle back onto $M$. In fact, it deals with both problems at a single stroke.
Of course, we have to begin by recasting things in terms of cohomology. For this, we recall that $H^i$ is the dual to $H_i$ (when we have $\mathbb Q$-coefficients), and working with dual spaces, i.e. with cohomology, should be just as good as working with the original space, i.e. with homology; we can always (at least try to) get back to the original context by passing to double duals (since $H_i$ of a closed manifold is finite-dimensional).
Eilenberg–Zilber/Künneth equally well allows us to form the product of cohomology classes.
So now how do we "intersect with diagonal and then move from $\Delta_M$ to $M$"? Well, this is easy with cohomology, because cohomology is contravariant: we simply pull-back the product of our cohomology classes along the diagonal map $M \to M\times M$!
Note: this procedure is exactly the cup-product, and I believe that this is (at least one part of) the origin of the cup-product in cohomology — it comes out of trying to find a nice way to describe intersection pairings.
In summary: intersection pairings, which are subtle to construct in terms of homology, are easier to construct in terms of cohomology, because of the nature of its functoriality.
Of course, one has to do more than simply construct the cup-product in order to get intersection pairings on manifolds: cup product will give a map $H^i \times H^j \to H^{i+j}$, or equivalently (passing to duals), a map $H_{i+j} \to H_i \otimes H_j$, whereas what we want is a map $H_i \times H_j \to H_{i+j - n}.$ So cup-product hasn't solved all our problems in constructing the intersection pairing.
To get from what we have to what we want, we need an extra step that identifies $H^{n-i}$ with $(H^{i})^*$, i.e. with $H_{i}$. Then the first pairing (with $i$ and $j$ replaced by $n-i$ and $n-j$) will become $H_i \times H_j \to H_{i +j - n},$ as required.
What is the moral reason that $H_i$ can be identified with $H^{n-i},$ i.e. with $H_{n-i}^*$? It is that under intersection pairing they pair into $H_0 = \mathbb Q$, and this pairing is (ultimately going to be proved to be) non-degenerate.
But again, it is tricky to define this, so it is technically easier to go to the cohomology side and consider $H^i \times H^{n-i} \to H^n$. Then we have a well-defined map by cup-product essentially for free, and so we are reduced to showing that $H^n = \mathbb Q$ (this comes from orientability and the related theory of the fundamental class), and that cup-product is non-degenerate. The latter statement is Poincare duality in its cohomological form.
To summarize a second time: working with cohomology allows one to side-step the problem of defining the intersection pairing on homology altogether, by using cup-product instead. (To get the statement of Poincare duality one still has to do work, but at least the "pairing", which is now just cup-product, is there from the beginning.) In fact, because of this, I believe it's not so easy to find a modern text which treats intersection pairing on homology at all, especially from a geometric point of view (rather than say working with cohomology first and then just defining intersection pairing by using duality between homology and cohomology to move to the homology setting).
Furthermore, cup-product exists in great generality, unlike the intersection pairing on homology, which only exists in the context of manifolds. (In the cohomology treatment, definining the pairing and then proving Poincare duality in the setting of manifolds become two separate issues, the first of which is just solved straight away in a completely general setting by the existence of cup-product, while in the homology treatment, the two issues are all tangled up together.)
A final remark, closely related to Andrew Stacey's answer: cohomology is contravariant (which is why one can define cup-product so easily). Other basic objects, e.g. functions, are also contravariant. (E.g. if $f$ is a continuous function on $Y$ (to any target), and $\phi:X\to Y$ is continuous, then $\phi^*f = f\circ \phi$ is a continuous function on $X$ to the same target.)
Pulling back is generally very nice, compared to pushing forward. (Think about the way set-theoretic operations like intersections and complements behave under pull-back compared to pushforward, or about the fact that we can pull back covector fields and differential forms, but can't pushforward vector fields in general.)
This gives cohomology some intrinsic advantages over homology; the above discussion of Poincaré duality illustrates this.