IRolling all dice out in the open can solve some problems. Unfortunately, it doesn't always do the trick because I've seen people blatantly lie about a die roll that others have seen. (One of the cheaters was rolling where another player could clearly see and just assumed the other player would never say anything. I know because I talked to the player sitting next to the cheater at the end of the session.)
Players can develop an 'us against them' mentality where they assume that the other players approve of the cheating because it helps them 'beat the DM'. The worst cheater I've encountered I know came from a background where the DM had DM PC's, pet villains, and himself wildly cheated in order to railroad the players and obtain the results that he wanted. So, in that context, he probably felt cheating was the only way he could be empowered. Then again, I wasn't involved with the group at that point, so it could be that all the players were cheating, and the DM's wild fudging was in fact something he adopted in defense. I can't really know.
"Bob, you used more healing potions last session than I've given out all campaign."
This gets to be a particularly hard problem to track when the players reach high level. With my low level groups, I can generally mentally track how many turns, spells, or resources a player has used in a game day. By the mid to high levels, this is really no longer possible and you are as a DM pretty much forced to rely on trust.
Give the person a chance. Some people may not know that cheating isn't allowed. One player I had commonly played video games in god mode and didn't think for a moment that fudging their die rolls was any different; it helped them enjoy the game more, so that was okay. (Though not okay with me.)
This player needs to realize that the DM is a player to - not a wish fulfillment machine. I get really frustrated by players that don't seem to realize that I'm trying to have fun as well, and that further more how they play impacts how and whether other people have fun. The problem solver in the group who gains no satisfaction unless he enjoys the process of winning is getting his fun stolen by the ego gamer that enjoys only the fruits of winning (and so enjoys cheating).
But why do these people cheat? I admit, in some cases I simply don't know. In a lot of the cases I've seen, it's because the person is either emotionally immature or has another factor going on where they just cannot stand the idea of "losing", so they have to cheat. I've also seen someone get their own self worth so wrapped up in the game (mostly because they had nothing else in their life that was giving them any self worth), that any hint of not doing well was more than they could handle.
Yeah, those are my 'ego gamers'. Oddly, they aren't always people whose self worth comes solely from the game. Sometimes they are people who are used to winning in other aspects of their life, who are frustrated by the fact that they aren't always in a dominant position at the table as well. It's just as likely in my experience to be the 30 year old CEO who made his first million at 27, who thinks that his IRL success ought to translate to fantasy domination as well.
I've also seen people cheat because they think other people at the table are cheating.
This is the biggest problem with cheating IMO, and it can wreck a group or campaign. If one player starts cheating and you don't call them on it soon, you can be pretty certain that the disease will spread to the whole group quickly. I've been in a group where they might as well not have used dice - everyone including the DM was basically rolling 20's on every throw (or at least, if not rolling a 20, then always rolling a success).
And every once in a while, I've seen someone cheat once because they had a string of really bad die rolls and just couldn't stand to have another one go wrong. It's a moment's frustration and not likely to be a regular thing, and I often just ignore it because I recognize that it's a breaking point thing and keeping the "fun" means just looking the other way this once.
For me as a DM, this is probably the biggest temptation I have, either to fudge when the NPC has had a run of really bad luck, or fudge against an NPC when a player has had a run of really bad luck. I usually regret it, because often just after I do it, the luck turns around and suddenly the players can't succeed at anything or the NPC can't fail (or both). Sometimes I still do it though, and try to justify that I'm making the game more fun. I presume most players experience the same temptation. As long as this doesn't turn into, "I'm never allowed to fail when it matters.", it's probably not a big deal.
As a side note: I do not roll my GM dice out in the open for most games, though all players at the table roll on the table where visible to others. That's because sometimes the dice get in the way of the story. Plus, some of my dice rolls are supposed to be a surprise, like searching for traps.
While I totally agree, I've found it very useful over the years to dramatically roll in the open whenever something important is at stake.
On the other hand, years ago I had to implement a magic item card system because people were forgetting what they had and because people were playing very fast and loose with the number of healing potions.
Over the years I've found playing fast and lose with the number of hit points themselves to be an even bigger problem.