Usually applications either store city, state, zip and don't use any lookups or they just store zip and join to the zip table as necessary to retrieve city and state. You seem to want to combine both techniques which entails more work for little benefit.
You should include the three columns in the rowsource for the combo - zip, city, state. Specify that the bound column is 1 and make all three columns visible. In the AfterUpdate event of the combo, you can copy the city and state columns to your form's bound fields -
Me.txtCity = Me.cboZip.Column(1)
Me.txtState = Me.cboZip.Column(2)
The columns are a zero based array so .column(1) is actually the second column.
You'll need to set your limit to list property to no since you don't intend to use a complete zip code list. I don't know what will happen when you enter a zip that is not in the list. You'll have to figure out what to do.