- There is a significant storage overhead due to all of the data that is collected about the computation (the "dynamic dependency graph").
- It makes the assumption that if the input to your algorithm changes a little, the execution path and intermediate variable values will still be the same for most of the computation. This is not true for many algorithms you might wish to make incremental.
I'm not necessarily saying these issues couldn't be overcome, but a lot more research is needed.
For some other alternatives to incremental computation that avoid these flaws (while introducing other problems of their own), you could look into:
DBToaster: http://www.dbtoaster.org/ LINVIEW: http://dl.acm.org/citation.cfm?id=2588555.2610519