I base it on how we want the night to go. Sometimes it's several 30 minute rounds, sometimes we do a single 2 hour round. It depends what else is going on that night as well.
Like allforcharity, we'll put a limit on the bets, min and max. Min 1 chip for inside bets, max 10 chips. Min 5 chips for outside bets, max 20. Putting a max also helps out the dealer since they're also in charge of stacking chips (usually).
And yeah, once the time starts to run out you see players who are behind trying to make up lost ground by betting huge, but that's just part of the game. No different than someone at a casino who's leaving soon and decides to go big or go home.
Rather than having a single winner at the end based on the most chips, I like to do a raffle draw. We give each player 5k in chips to play with at the start of the night, and at the end, they can cash in their chips for raffle tickets per 1000 chips they have (rounded up), then draw for prizes. So if you aren't the clear winner, you still have a chance at a prize but of course the more chips you have, the better your chances.
This works well if you have several tables, so players can move around the room playing at different tables.