You could use CB Conditional to conditional display a City field based off the State fields value. However, this could easily end up with dozens of fields. I believe there's a jQuery based plugin that pre-populates a country/state/city drop-down, but can't recall where to obtain it or if it's still maintained.