I was having a lot of issues yesterday getting my 3GS to 4.3.1. Now I'm no expert so I'm not writing a guide, just writing what I had to do, in hopes it helps some people struggling

Assuming you are able to unlock....I used windows

Using snowbreeze "2.5.1" the newest version I made custom FW and did the whole iTunes thing.

You may get an iTunes 1015 error(I did), if so download and run "fixrecovery43" and you should be jailbroken once it's finished.

If fixrecovery asks for a dll file, go download it(google) and put them both in the same folder then try running fixrecovery again, it should work.

Then go get your ultrasn0w fix for 4.3.1 and you should be unlocked.

I guess it kind of looks like a guide lol. I hope this helps.