There are some interesting issues here: Puerto Rico and Guam have their own "state" abbreviations which you probably forgot to put in your 50-state list; Puerto Rico uses slightly different format standards, not to mention spanish components (who said English should obviously be the standard language for *all* of the United States of America and her territories?); Mail-stop-codes appear above the name of the addressee, address chunks get split if they're too long; the most relevant part of an address goes further down, so the standard "lines 1, 2, 3" method is dangerous if you think the interesting part will always be in "line 1" -- it shouldn't be; international addresses have their own issues; zipcodes aren't always numeric; rural roads, interstates, and various other non-street addresses are permissible, ...
Maybe now you see why a BLOB field might be a better idea sometimes? Either that, or a *lot* of logic, very specific fields, and a jar of luck.