Because adjoint functors are just cool, and knowing that a pair of functors is an adjoint pair gives you a bunch of information from generalized abstract nonsense, I often find myself saying, "Hey, cool functor. Wonder if it has an adjoint?" The problem is, I don't know enough category theory to be able to check this for myself, which means I can either run and ask MO or someone else who might know, or give up.

I know a couple of necessary conditions for a functor to have a left/right adjoint. If it doesn't preserve either limits or colimits, for example, I know I can give up. Is there an easy-to-check sufficient condition to know when a functor's half of an adjoint pair? Are there at least heuristics, other than "this looks like it might work?"

The adjoint functor theorem  as stated here and the special adjoint functor theorem (which can also both be found in Mac Lane) are both very handy for showing the existence of adjoint functors.

First here is the statement of the special adjoint functor theorem:

Theorem Let $G\colon D\to C$ be a functor and suppose that the following conditions are satisfied:
(i) $D$ and $C$ have small hom-sets
(ii) $D$ has small limits
(iii) $D$ is well-powered i.e., every object has a set of subobjects (where by a subobject we mean an equivalence class of monics)
(iv) $D$ has a small cogenerating set $S$
(v) $G$ preserves limits
Then $G$ has a left adjoint.

Example I think this is a pretty standard example. Consider the inclusion CHaus$\to$Top of the category of compact Hausdorff spaces into the category of all topological spaces. Both of these categories have small hom-sets, it follows from Tychonoff's Theorem that CHaus has all small products and it is not so hard to check it has equalizers so it has all small limits and the the inclusion preserves these. CHaus is well-powered since monics are just injective continuous maps and there are only a small collection of topologies making any subspace compact and Hausdorff. Finally, one can check that $[0,1]$ is a cogenerator for CHaus. So $G$ has a left adjoint $F$ and we have just proved that the Stone-Čech compactification exists.

If you have a candidate for an adjoint (say the pair $(F,G)$) and you want to check directly it is often easiest to try and cook up a unit and/or a counit and verify that there is an adjunction that way - either by using them to give an explicit bijection of hom-sets or by checking that the composites
$$G \stackrel{\eta G}{\to} GFG \stackrel{G \epsilon}{\to} G$$
and
$$F \stackrel{F \eta}{\to} FGF \stackrel{\epsilon F}{\to} F$$
are identities of $G$ and $F$ respectively.

I thought (although I am at the risk of this getting excessively long) that I would add another approach. One can often use existing formalism to produce adjoints (although this is secretly using one of the adjoint functor theorems in most cases so in some sense is only psychologically different). For instance as in Reid Barton's nice answer if one can interpret the situation in terms of categories of presheaves or sheaves it is immediate that certain pairs of adjoints exist. Andrew's great answer gives another large class of examples where the content of the special adjoint functor theorem is working behind the scenes to make verifying the existence of adjoints very easy. Another class of examples is given by torsion theories where one can produce adjoints to the inclusions of certain subcategories of abelian (more generally pre-triangulated) categories by checking that certain orthogonality/decomposition properties hold.

I can't help remarking that one instance where it is very easy to produce adjoints is in the setting of compactly generated (and well generated) triangulated categories. In the land of compactly generated triangulated categories one can wave the magic wand of Brown representability and (provided the target has small hom-sets) the only obstruction for a triangulated functor to have a right/left adjoint is preserving coproducts/products (and the adjoint is automatically triangulated).
