The real problem is the composition of the side, as well as the way all of them bat. Kaif is the lowest in the hierarchy of seven batsmen, all of whom are trying to play for a long innings. In particular, Ganguly, Mongia, Dravid, Laxman and a struggling Yuvraj/Sehwag spend a lot of time just trying to rake up a big score- after all, they have to play to their selections. On a good day, Kaif never gets a fair chance to build an innings, since already enough time has been spent by others. Kaif often bats when the team is in serious trouble, so if he fails, the team fails. Little wonder then, he's often blamed for a lot of the team's batting collapses, when even the numbers one through six do nothing of note. It's not possible for a specialist batsman (or even one who isn't) to maintain a healthy average from such a position. Had there been more power players in the batting lineup, they could complement these grafters well and the likes of Kaif wouldn't look half as bad. The dashers could dash ahead, while Kaif and the other grafters could take their time and stay on a lot longer.
Another problem is the amount of one-day cricket he has played. ODI's demand he scores at a rapid pace. Sometimes, he has to bat out an explosive Klusener-like innings, which is beyond him. He often ends up playing a few rash strokes just to add extra runs- consequently, he doesn't last too long. Moreover, he doesn't turn up for too many FC matches for his state side when he's on the ODI bus, so he may not get used to the habit of playing a long, patient innings. He doesn't even play the ODI spinners wisely, as you might have noticed. A long break from ODI's and an extended run for UP in Ranji will do him a lot of good and he may return a superior ODI player, and even boost his chances of making the Test side.