There have been lots of studies within academic circles regarding IPC and ILP limits for a long time, one of my favourite papers for presenting IPC limits with clarity in a way that the layman can understand is the following paper:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.47.9196&rep=rep1&type=pdf
If you build a perfect machine with infinite registers, infinite width/depth, perfect branch predictor, limitless caches, etc: Then you are looking at an IPC of approximately 40 in most integer workloads. However it should be noted that this is adhering to data dependencies and therefore does not include data speculation.
If you start to break data dependencies (I.E: Value Prediction) Then there is technically infinite IPC because you could *in theory* predict every instruction ahead of time and execute them all in a single cycle. However in real terms, a value predictor will never be 100% accurate, and of course we will never have infinitely wide/deep machines. As people have mentioned, diminishing returns may put a limit on scaling and extending certain elements of a CPU which will certainly present new challenges moving forward. But even with an ambitious (but somewhat realistic scenario) you can end up with IPC well into the hundreds.
My 2 cents for what it's worth? - Using value prediction and making incredibly wide and deep OoO machines (I'm talking reorder buffers in the thousands of entries, enormous caches and branch predictors, and a 64 wide decode engine in the front end) I'm pretty confident we can get IPC up to at least 50, and there's no real reason to think you couldn't push past even that.
With aggressive enough value prediction and hundreds of execution ports I can't see a good reason why IPC couldn't break the 100 barrier (Yes it would be incredibly complex, and it is decades and decades away, but all the theory is there)
I'd really recommend reading through the paper I linked, particularly pages 12 through to 15.