The way Android works is Google releases the code for each version (in your case 4.1.2) with a code name (Jelly Bean). Each phone manufacturer has the option to take that code and change it to work for each specific device. Many times, each carrier will take the code from the manufacturer and change it some more and then either program it onto, or send an over the air (OTA) update to existing phones. This isn't done on every phone with every version of Android that's released. Many times the phone manufacturers decide to stop updating devices so they get stuck on old versions of Android. That's why there are still a bunch of phones out there on Gingerbread (2.3).
So to get a new version of Android on your phone you have to either wait for your manufacturer and probably carrier to take the new version of Android and change the code for your phone, or wait for some other developer to do that, then figure out how to "root" your phone (gain "all access") and "flash" a "ROM" (program a new OS) on your phone. The problem with flashing a new ROM is you have to see if someone will do out out of the kindness of their heart (which happens a lot for popular phones), then make sure it's actually stable, and then go through the whole process of getting it on your phone which, if done incorrectly, could turn your phone into a paperweight.