Well, there are a few limitations to this.
For one you cannot alter "the player" but any of the "races". Before you start a game and select a race the player has no fixed appearance, there's nothing which could be changed from outside.
Then all races share the same body meshes, so getting a different appearance in body-shape between races is not easy to accomplish. I'm not saying it's impossible, it just requires some work-arounds, not rarely involving trickery via scripting.
Plus in Oblivion your body comes with your clothing, so no matter what trick you use to get different body meshes when nvde, once you equip something you'll get the body mesh from inside this (together with all texture issues arising from this).
A race's head has to underly certain factors to be fully functional ingame. You're right, it has to do with FaceGen, but it's not like you couldn't craete a completely custom head mesh. You just need to create the necessary EGM (facial shape morphs) and TRI (facial animations) files along with it. This however is still not very easy, unless you possess the licensed version of Singular Inversion's FaceGen Modeller (or so I've heard). Doing this without the licensed tool is still highly complex. The NIF, EGM and TRI have to match or your face will be massively distorted ingame (like a mess of polygones exploding).
You need to model all morphs and animations (quite a number, around 50 or so) or it will not work, and import/export from/to NIF files directly is no option, because this will inevitably alter the vertex order and the files will no longer match.
Also a face consists of more than 1 meshes. There is the inner mouth, the tongue, upper and lower teeth and maybe even the eyes. All these need to have matching morphs and deformations in matching EGM and TRI files as well. You see how the number of meshes you inevitably have to create keeps rising? Plus you will require HEX-editing some files, or use Scanti's very handy tools, to even create those EGM or TRI files.
The only person I know who ever attempted something like a completely new head mesh modeled from scratch would be ThrottleKitty, just for reference.
There are a few guides available from TK telling how it was done and what's important. Search TK's mods and you will find them.
P.S.: I'm still waiting for the Blender NIF Scripts to get TRI file support as well, because only EGM file support as it is now is useless for creating new head meshes. But once it can import and export both, there'll likely be no hex-editing or other magic required anymore, plus the exported NIF/EGM/TRI files will always have matching structure. All in all the whole ordeal should get way more easy.