This is by no means a complete or exhaustive answer - the posters before me already gave some very good points, I'd just like to add my 2 cents.
Another thing - I never really got used to apt/dpkg. It always seemd over-complex to me, I'm really most comfortable with yum/rpm.
pacman is very easy to use, which is a pro and a con - you can learn to use it (package building aside) in a single afternoon - it uses mostly intuitive and complete package management features, but - and this is a big but - it is extremely inflexible.
If the designers did not think of a feature beforehand, you're screwed.
A few examples:
there is no native versioning in pacman. If you wish to downgrade a package version - you have to download that particular package version, and use the -U (upgrade) option to install from file. It is very much geared towards always using cutting edge packages on your system.
There is no real internal cache cleaning/complete rebuild. If (due to a network issue) a package download was corrupted, e.g during -Syu, the error message, while accurate, will not be of much use - it will not pinpoint the corrupt package even with "full" verbosity and debug turned on, and no amount of -Syyc will really clean the cache and redownload the packages. The good news is that -Sc will let you know where the downloaded packages are so you can simply remove the offending one (if you can figure out which one that is) or all of them and restart -Syu.
pacman integration with dkms is also somewhat problematic - while installing a new kernel I kept having errors from dkms. Using dkms build && dkms install against the new kernel worked without a hitch, yet pacman would offer no information whatsoever why dkms failed during the kernel upgrade (I suspect it never passed the correct path of the new kernel, and just let dkms use the default (current running) kernel but with wrong version).
Another anecdote about it's inflexibility - as stated, I'm used to rpm/yum. If I have a file on my system and I wish to know which package owns it, I can run yum provides /path/to/file and get ALL packages that can put it there - even if none of them is installed. If the file was placed manually, and now I wish install a package - it will renamethe new one(add extension .rpmnew), and let me choose what to use.
pacman simply errors out that a file already exists, but with a completely irrelevant error message - it complain of conflicts between the file "true" owner and the currently installed "filesystems" package, as if it is also an owner of the same file. Also it's mostly geared towards local installed information - trying to gain information (such as file lists and ownership) of packages not yet installed is less intuitive.
Simply put - it is not as mature as yum, and probably dpkg, which lends to it's ease of use as well is relative inflexibility.