I recently posted a question about being on the other side of this scenario - a professor in my university offered to take on a student who had already agreed to work with me (and had been working with me for the previous year already).
You'll notice from reading that question and its responses that while I was a bit annoyed with the professor, I wasn't upset with the student. In fact, I advised the student to choose the advisor he thought would be best for him, and gave him a good recommendation to the other professor in case that's what he chose.
That's because the student is supposed to act in his/her own best interest (while still being responsible and professional, of course). It's not being selfish, it's being smart.
The first professor shouldn't get upset with you for pursuing an opportunity that is better for you - if he/she does, then you really don't want to work with someone like that, anyways.
So, go talk to the second professor: "I was thinking some more about your offer to advise me on my thesis and I have reconsidered my original decision. Is the offer still available?"
If he/she says yes, accept the offer and go talk to the first professor: "I really appreciate your offer to advise me on my thesis, but I've decided to work with X instead. Thanks, again."