As mentioned by Nik, It depends on how many bits are reserved to hold the transaction counter.
While working on a POS application, I have seen 21-bit transaction counter in use. Thus, allowing over 2 million transactions.
After key exhaustion, the device needs to be re-injected. But since key exhaustion can happen anytime, immediate key injection is not possible. In this scenario, our application re-injects the same IPEK to get the merchant going but later a terminal engineer will come and do the fresh key injection.
Note: This is the use case I have worked with. I am not sure if this is widely used or not.
Another veriation: In case of exhaustion, your application can do an automatic RKI(Remote Key Injection) where it can receive new IPEK from a server.