I've been having the same issue since I got my iPhone a month ago. I could not get my keychain to sync, though it worked fine on my iMac and my iPad.
I also could not turn off keychain in iCloud settings, so I could never be presented again with re-authentication OR giving the passcode for my keychain.
After working with Apple for the last week and doing some troubleshooting steps (including some if not all of those already listed here), I tried the following, since I am lucky enough to have access to another iCloud ID via the hubby.
On the iPhone, sign out of iCloud with your trouble account. I allowed it to delete my iCloud stuff from my iPhone
Sign in with a different iCloud account. I chose to not merge the data. I didn't change any settings.
I logged out of the secondary iCloud account, allowing it to delete anything saved on my iPhone.
When I logged back in with my account, keychain was turned off.
When I turned it on, it asked me for the SMS code (which I got pretty immediately).
All of my keychain data (passwords and saved credit cards) became available and are synching.