Examples of domains where decision trees perform poorly include: -Low amount of data -Domains where you have extra knowledge about the data (such as some features coming from certain probability distributions) that you can incorporate into classifiers.
Decision trees work well in a variety of applications, but that does not make them the "best" algorithm, and it is rare that a classical decision tree provides state of the art performance on any given data set. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122...
One disadvantage of decision trees is that they can be slow on large data sets (> 1M examples). They are a batch algorithm, which means that you have look at all examples to build a tree, although they can be trained in an mini-online setting (only look at 10K examples per tree) which is faster.
More importantly, decision tree induction involves combinatorial optimization over splitting features. This is much slower than a continuous optimization over non-linearities. So decision tree induction is slower than, say, stochastic gradient descent over a neural network.
(As hamner points out, there is no "best" data mining algorithm, just like there is no "best" programming language.)
>Decision trees are weak learners.
This is untrue. They're only used as weak learners in boosting because the tree depth is limited to some small constant.
>Decision trees run fast even with lots of observations and variables
I don't know all the decision tree learning algorithms, but at least some of the common ones run in O(features * samples * splits). That's not terrible, but you can handle much larger data sets optimizing w/ stochastic gradient descent or coordinate descent.
>Decision trees can easily handle unbalanced datasets.
This links to a post about bagging, which is not really specific to decision trees (but can be done with any learning algorithm)
There is no silver bullet in data mining/machine learning.
Spoilers: that's not always.