The other day I realized what the 'S' in iPhone 3GS and iPhone 4S stood for.
It stands for 'Stable'.
There were so many issues with 3G version which they solved in 3GS. Similarly there were so many issues (remember the antenna issue) with 4 which were resolved in 4S. ;)
As an ex-3GS user (which was an excellent phone!) would definitely say wait for the S version of iPhone 5 if you want to avoid a lot of anguish... unless they release a 4SS (super-stable) :D