CherryPicking in the context of revision control is to merge only very specific changes from one branch to another.
For example, If you have several branches, and one of the uber-unstable and utterly wacky development trees gets a very important fix, a VCS with good CherryPicking support will let you move only that change to your stable branch quite easily. A VCS without such support will probably mean you'll have to do it manually, thus losing the VersionControl semantics of that patch's history, as well as creating future conflicts if the development tree is wholly merged into the stable one at some later point in time.
DavidsAdvancedRevisionControlSystem is a VCS with excellent CherryPicking support.
Any RCS based on patchsets rather than files or directories will be able to do this. BitKeeper and GitVersionControl are good examples.
MattMackall, creator of the MercurialVersionControl system, provides arguments against CherryPicking as implemented in DavidsAdvancedRevisionControlSystem [retrieved from http://www.w3.org/2007/03/22-hg-talk-minutes]:
He also provides solutions for how he advises to perform the CherryPicking in Mercurial, and this should be also applicable to other VersionControl systems which are "history-oriented" [http://article.gmane.org/gmane.comp.version-control.mercurial.general/5037]: