My method is to just have a small cardboard box (about 1" high and 4" x 6") in the center of the gaming table. When you make a roll, you throw the die into the box, in full view of all. After I read the result, you take the die out of the box.
This eliminates "empty rolling" (roll... roll... roll... roll... roll... HEY LOOK I GOT A NATURAL 20! I'M SAVING THAT FOR MY NEXT ATTACK ROLL!) as well as the ever-popular "set the d20 to 20 and roll a d12 into the pile" trick.
Opponent/NPC attack rolls, Saving Throws, skill checks, etc. take place behind the DM screen so the players don't get an easy look at the critter's Attack Bonus/Will Save/etc. Initiative rolls and damage rolls, however, get made into the main box in full view of all players.
Finally, PCs attempting things like Search Checks, Spellcraft to ID a spell, etc., where knowing the result would be "bad" for metagaming ("well, I rolled a natural 20 on my search check, so we're automatically finding anything here") get made behind the DM screen by me. Skill checks with an obvious immediate result (e.g., Climb checks) are made by the players.
XP is tabulated by me. I announce, "Joe, you just gained enough XP to level."
Hit points for advancing a level are handled as follows - the player can choose right out to take half the maximum die value (e.g., 2 hp for a d4, 5 hp for a d10, etc.) - this means that he will have slightly less than average hit points, but that he's "safe" from rolling low (the "cost" for the "payoff" of a certain minimum). Alternatively, he gets one roll, into the box, in front of me, for hit points.
Players are always allowed, when rolling into the box, to declare, "this is not my actual roll" (you know how players like to find "hot dice"). I will repeat "ok, this is NOT your actual roll" and only AFTER I repeat it can they roll it. The roll does not count, good or bad. Otherwise, if you throw it in the box, that's your roll and you'd best live with it.
I use a laptop to track hit points, item charges, ammo (one PC was SHOCKED when his archer ran out of arrows at 3rd level - he just figured that buying 50 arrows at 1st level was the same as buying infinite arrows at 1st level since I never asked him how many arrows he had left). I also keep a copy of all character sheets on computer - and what my computer says is always right (unless the player can remind me that I missed something). I give the PCs a "loot list" at the end of each session; they have to decide how to divide it and return the list to me, indicating who gets what, and then I update their character sheets on my computer. IOW, the PCs can keep their own "unofficial sheets" but my "official" sheets are the last word.
I hate to do this, but I once had a VERY bad experience with a "chronic" cheater (his attributes increased by 10 points every session, he added tens of thousands of gp to his wealth, multiple magic items, and "natural 20'd" every roll (after 50 attempts) and he was generally an ass to the other players on top of it all - the campaign devolved into all the other players ganging up on him to beat the stuffing out of him and rob him blind every week - knowing that he'd just 'cheat' his way back the following week anyway) and I'm not letting it happen again. :-(
--The Sigil