Duncan has been rapidly outgrowing the last bike we got him, and I wasn't convinced he'd make it through until Christmas so we ended up springing a new one on him early.
He's finally off the training wheels, which has been great. Once he got over his stubbornness, he took to the entire process inside of an hour. The third time he went to take off, he did so without my help, and thus far hasn't had any major stacks. So it was time for a bike that fits.
You can see him in the picture to the left, with his helmet (for some reason this kid is currently infatuated with ladybugs) and the cheap chinese gloves we got him a while back, that he's grown well into (and that have actually held up, given my concerns about their quality).
We ended up opting for a Mongoose Mitygoose from a local retailer. The price was pretty competitive compared to what you can find them online for, and I really like the service guys at the local shop so I'd rather support them than buying him another kmart bike (even though Mongoose are arguably no better in quality at this point) or buying online where we'd have to wait and risk him not liking it. Plus of course there was a tiny bit of brand loyalty there - a Mongoose was the brand I always wanted as a kid and the first brand new bike I bought for myself was a Brawler (not too different from this one, incidentally).
The new bike, while ever so slightly too big for him (we have to run the seat slammed for him to fit it right, and at that point the seat clamp doesn't grip the post 100% because there's a taper) fits him much better than the old one and he appears to be much more comfortable and in control of it. I'm confident he'll grow into it properly well before Christmas, the rate this kid's going.