Significantly, SpaceX has not specified the upper stage. The upper stage for a plain Falcon 9 to LEO lift will require at least two and perhaps three Merlin engines. The upper stage for a Falcon 9-S9 to LEO lift (required to deliver a Space Shuttle cargo to the ISS) will require at least five Merlins, which means it will actually be a Falcon 5 first stage, but with large expansion ratio nozzles and some ability to do in-space restarts (propellant settling, multi-use igniters, RCS without gimballing the main engine). If they are going to recover that stage, though, they'll need more than just the F5's parachutes, they'll need some really wonderful ablatives, somehow spread under all the delicate engine bits.
If you ignore the upper stage reuseability, the business scheme seems wonderful. NASA needs 20+ heavy LEO launches to lift the rest of the ISS. SpaceX builds a fleet of identical airframes and engines. Four airframes and 32 engines go up, three and 27 come back. They build about 25 airframes and 140 engines over several years, and each airframe gets an average of three flights, and each engine gets four or five. They might charge NASA $1.5B for the whole launch set and make a ton of money, and save you and me (i.e. the average taxpayer) about 75 bucks apiece.
But what's this about Full reuseability? Full reuseability is not a press mistake. The SpaceX press release says explicitly that
(Except Kistler's design, of course.)
This is crazy. If they take over lifting the ISS segments, they'll have a nice steady stream of launches. Over time, they're going to learn how to manufacture their engines better (more thrust, better reliability, lower manufacturing costs), and the later engines will be better than the earlier ones. The steep learning curve makes the early hardware depreciate fast, which makes spending more money to recover it less attractive. Throwing away the upper stage is a great way to clear out the obsolete inventory.
Heck, at some point (2007?) they're going to deliver the Merlin 2. My guess is that this will be a 600,000-lbf-thrust engine. Their next-gen EELV-class launcher will lift 25,000 kg to the ISS without strapons, with four Merlin 2's as the bottom stage and four or five Merlin 1's as the top stage. Why use the Merlin 1's in the upper stage? Because their business plan requires each engine to get used a bunch of times. The last thing they want to do is introduce a new rocket which obsoletes $60 million dollars worth of engine inventory. Instead of recovering a brand-new engine from the upper stage, it will be cheaper for them to use and expend their Merlin 1 inventory in the upper stages of their launches.
I bet the upper stage reusability verbiage is just there to appease some group at NASA. SpaceX may actually attempt a controlled upper stage reentry with ablatives when launching some slightly more lightweight ISS segment. They may get some interesting data from such experiments. But I can't see them pushing upper stage reuseability very hard. They need to concentrate on the easier and more lucrative problem of recovering their lower stages first.