The last week I have struggled with rotating the mesh 90 degrees. In Blender, the z-axis points up, which is very natural for someone with a science background. However, in MakeHuman and many other programs like Maya it is the y-axis that points up, which means that the character comes into Blender lying on his back. To correct for this, I have worked on an option that loads the character standing on his feet instead.
This sound really easy; instead of putting a vertex at (x,y,z), put it at (x,-z,y) instead. But not so fast. Shape keys and joints also need to be rotated in the same way. After this fix, we are ready to load the mesh with his head up.
But what is this? The circles around the mesh have the wrong rotation. The problem is that several meshes are imported. Apart from the main mesh called "Human" there are several display objects hidden on layer 20, and they should not be rotated. To fix this, we decide to

only rotate the mesh if its name is "Human", and load the mhx file again.
More problems! I changed the shape of the panel driving the facial keys to something more intuitive; I will discuss facial animation and lipsync some other day. The most striking thing is that the little face is upsidedown. This is not how it is supposed to be, and not how it comes out if we load the mesh without rotation.

The problem has to do with roll angles. In Blender, each bone has its own coordinate system with the y-axis pointing from head to tail. A priori, the only thing we know about the x- and z-axes is that they are perpendicular to the bone. The direction of the z-axis is defined by the roll angle. I don't really know the exact definition of the roll angle, but this is not important. What is important that the roll angle is chosen in a predictable and consistent manner. It the roll angle is not given (which is the same thing as setting it equal to zero), the rotation of some bones relative to the armature differs between Y up and Z up building.
The solution is to provide a table of the roll angles for all bones. For bones pointing left-right or up-down, define the local z-axis to point forward, to a point far in front of the character. This is not a good definition for bones in the front-back direction, because the y-axis already points forward, so these have z pointing down instead. In this way, all bones have the same orientation relative to the armature, for both Y up and Z up.
At this point I was ready to commit, when I realized that things do not work when IK is turned on. Driven shape keys are implemented by Py-drivers, which give great flexibility. To work, the file pydrivers.py must be loaded into a Blender text window before the mesh is imported (this is not my idea, but just the way Py-drivers work). The rotation of the upper left arm around the x-axis, say, is given by the expression
Blender.Object.Get('HumanRig').getPose().bones['UpArm_L'].quat.x.
Alas, this value is only updated when the bone is rotated actively, and not when it moves in an IK chain. So I changed the implementation of shape keys driven by bone rotations to be independent of python, and now things work as expected. Facial shape keys are still implemented by Py-drivers, but that is ok because the bones in the face panel are not part of an IK chain.
Finally time to commit. Suddenly the makehuman site refuses to let me do so, despite having successfully committing to svn several times in the past. Don't know if I have forgotten how to log in, or if there is any problems on the MH side. I will make another try at my work computer tomorrow, but for the time being this code only exists on my computer.