Though my Courant number is less than one, in transient cases like lid-driven cavity flow etc, the courant number changes to greater than one, after a few timesteps/iterations making my solution not converge. How do I know beforehand if my solution will converge/diverge as the Courant number is changing with every iteration?
What you need is dynamic time-stepping. In OpenFOAM, you can specify the maximum Courant number you'd want and the solver automatically calculates the time-step after each iteration based on the specified Courant number. You can look for the following keywords, which are to be specified in the controlDict.
adjustTimeStep, maxCo, maxDeltaT