Apparently it's not (though I concede it often is like that). From the linked article...
UPDATE So this is what AT&T tells us:
An iPhone 3G customer in most cases can early upgrade at $399 [16GB] or $499 [32GB].
You’ll note that that’s still several hundred dollars more than what Joe Smoe would have to pay, right off the street, if he doesn’t already have an AT&T account.
No, Joe Shmoe is "paying" more than $299 for the phone; he's just paying over the long haul, with a new contract commitment to AT&T. AT&T already has your contract commitment. You have nothing to offer them but cash.
UPDATE So this is what AT&T tells us:
An iPhone 3G customer in most cases can early upgrade at $399 [16GB] or $499 [32GB].
You’ll note that that’s still several hundred dollars more than what Joe Smoe would have to pay, right off the street, if he doesn’t already have an AT&T account.