How can I forecast the date Bitcoin will hit a certain blockheight?
Take the difference (in days) between the current date and the date you are trying to estimate the block height for.

Then multiple that difference by 24 hours and by 6 (6 blocks per hour)

Current block height + (difference in days) (144) = new estimated block height

Difficulty changes upon release of new ASICs or halving are temporary (average block time will eventually revert to 10 minutes) and hard to predict. Therefore they cannot be accurately modeled in any equation.