I repeat, every iPhone can be jailbroken. Your jailbreak will probably be a "tethered" jailbreak, which brings with it some inconvenience. Only you can decide whether the advantages of a jailbreak outweigh the inconvenience of being tethered.
Let me try to explain. Every iPhone has a chip in it which contains a tiny program called iBoot. iBoot is the phone's bootloader, the program that tells the phone how to load the operating system. During this process, the OS checks the OS to make sure that it is the official version provided by Apple. If it is not the correct version, it will normally refuse to boot your phone.
Clever hackers discovered a weakness in iBoot (which they called the 24kpwn hack) that allowed them to inject their own code into iBoot to bypass this security check and boot a jailbroken version of the OS that iBoot normally would not boot. Basically, by crashing iBoot at a certain point in the boot process, they could inject 24kb of their own code and iBoot would think it was perfectly normal. This code disabled the security check, and it was the only known way of getting a jailbroken iPhone to boot itself.
As of sometime in October, Apple started shipping iPhones with a new version of iBoot. This new version patched the 24kpwn hack, meaning we lost our only known way of modifying iBoot so that it can boot a modified version of the OS. It is still possible to use a computer to bypass iBoot, but one can't convince iBoot to bypass itself. This is why the new iPhones can have only a tethered jailbreak.
Does your phone have the new iBoot? There are
ways to check. If your iBoot version is 359.3, then you can have an untethered jailbreak (whether on 3.1.2 or any other version of the OS); if it is 359.3.2 or 359.3-2 you cannot, at least not now. It has nothing to do with the version of your OS, only the version of iBoot.
Right now there is no prospect for a new iBoot hack, and it is therefore impossible to predict when or even if one will be found. For now you should assume that any phone with the new iBoot is not untetherable.