The 3 Field Shopping Cart Web Form
voltagecreative.com
voltagecreative.com
So while you could use this system to make an educated guess, you'd want to be very careful about getting confirmation before using the address, and that could defeat the original purpose of streamlining the data entry process.
--edit--
It might actually be uncommon, but I think you still need to take it into consideration.
With the right zipcode db you could also offer a drop down of available cities if there is more then one.
http://zip4.usps.com/zip4/citytown_zip.jsp
It is true that it might confuse the user if you auto-populate the city name, but I think that in practice it wouldn't be much of a problem. If you live in a split zip code and your city's name is not the Postal Service's "Actual" name, then you are probably already used to receiving lots of mail with that other city's name on it. For example: almost all bulk mail will use the "Actual" city name.My zip code is shared with one actual city about 10 miles from my house and at least two unincorporated rural townships. You could put a completely wrong city (and I often get mail with the city listed as Minneapolis, which is about 45 miles away) and it would barely merit raising an eyebrow. My mail will still get here on time.
http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom
For example this functionality is pretty much available on any UK e-commerce site:
http://www.magentocommerce.com/magento-connect/CraftyClicks/...
With a street number, and a zip/postal code, you can get Street Name, City, and State in one fell swoop.
Zero fields :) is what I absolutely strive for in my UX.
Other than that, I also have logic in place to auto-insert your city and state. That's just a waste of time for the user and I honestly couldn't care less since all I really need is their Zip.