I've had the same problem for SO long. I've looked here before, and I've changed the address book and account pictures and my iCloud account picture and address book in iCloud and in my phone. EVERYTHING.
Then today I realised that my problem was being caused by a little setting I'd enabled in the Facebook for iPhone app. Basically, you can set the app (through friends, then this icon in the top right of an arrow) to sync your contacts' photos with those from Facebook so that you have up to date pictures of them.
In those options, there's an option to 'replace existing photos' of contacts. It was turned on. BAD IDEA.
Since my iCloud account has the same name as my Facebook account, the Facebook app was replacing my contact card info on my iPhone to my Facebook photo (which had been my account photo for a short while). Of course, this was syncing to my iCloud account and finally to my computer, changing my account picture to my Facebook photo. Changing it back on iCloud etc was reverted to the Facebook photo every time that I opened the Facebook app, which caused it to sync the contacts' photos on my phone with the friends list ones.
That is why it is really variable how often the picture changes back, because it depends how long it's been since you last opened the Facebook app on your iPhone! Finally, I am SO GLAD that I managed to figure out the root of the problem. Turning off that 'replace existing photos' problem has fixed everything.
I hope that this solves all of you guys' problems too! 🙂