it is possible, you just need to define the relative position of the center of the shield model (for example) from the center of you body model. then use something like:
Code:
glPushMatrix();
glTranslated(body_x, body_y, body_z);
glRotated, glScaled, ..., whatever transformations you want to do to the MODELVIEW matrix.
glCallList(body);
glPushMatrix();
glTranslated(shield_to_body_x, shield_to_body_y, shield_to_body_z);
glRotated, glScaled, ..., again, relative position, orientation and size, relative to the body.
glCallList(shield);
glPopMatrix();
glPushMatrix();
glTranslated(sword_to_body_x, sword_to_body_y, sword_to_body_z);
glRotated, glScaled, ..., again, relative position, orientation and size, relative to the body.
glCallList(sword);
glPopMatrix;
and so on for the rest of the objects (armour, shoes, sunglasses, whatever...)
glPopMatrix();
This is assuming you are using display lists (hopefully), you can give continuous list id numbers to every object and then you just have to select an integer.