I had this question for myself and found three (really only two) assumptions that are important and could be violated in practice. I decided to write what I found here since this question helped to think about it.
Representative of Future Data
I personally don't like when people bring this up because NO algorithm does well when your training data is different than the test data. This is the whole point of the "no free lunch" theorem that in order to do better than random guessing you must have additional information or anything can happen.
No Information Leakage
Okay assuming we are even in a universe where historical data is helpful then we have to make sure there is no information leakage. By that I mean information from the validation set leaks to the training set. When we partition the data into K-folds and designate one fold to be the validation set then we have "lost" information. K-fold cross validation uses that "lost" information to estimate test accuracy.
However, lets consider an extreme case. What happens if the model you used could completely guess every single point in the validation set with just the training set? Then instead of K-fold cross validation you are instead running your model k times getting exactly the same result. Obviously that would be no help whatsoever on estimating test accuracy.
In practice you couldn't tell so easy because there could just be some information leakage. A practical example is looking at the sales of different years of the same make and model of car. Car models don't change much from year to year and so sales will be really similar from year to year. If you have information from 1990-2016 and then take out 2000 as your validation partition then you haven't lost much information in your model.
Bias vs Variance trade off
K-fold cross validation make any model more complicated. That is because we believe the model is very biased by the training data. We add variance into the model (which parameters to be picked) to decrease bias. This is a known trade-off in statistics that has no clear cut optimal solution. I think this is basically a corollary of information leakage assumption though.
K-fold cross validation assumes that the good historical data gives a very biased model and isn't too redundant. Otherwise we are now in the domain of the free lunch theorem where even "anti-cross validation" is a good way to go.