From the code
Matrix44f matrix = Matrix44f::CreateRotateAroundY( 0 );
matrix.SetPosition( Vector3f( 0, 0, 1.f ) );
Graphics::Model::Node *frontNode = myModel.GetGraph().AddNode( matrix );
matrix = Matrix44f::CreateRotateAroundY( 0 );
matrix.SetPosition( Vector3f( 0, 0, -1.f ) );
Graphics::Model::Node *backNode = myModel.GetGraph().AddNode( matrix );
I guess it means you apply the translation (0, 0, 1) to the vertices to get the front and (0, 0, -1) to the back. However I think this might not work, as you end up getting the same winding order for your front and back faces.
------ cube face2
| |
------ cube face 1
x <-- eye
Imagine a cube, if you are looking straight at it, as in the diagram face1 need to have a CCW ordering, while face 2 need to have a CW ordering. So I don't think you can just apply a translation matrix to get the front and back faces. you would probably have to respecify the ordering. Probably either by respecifiying the vertices or just using a index buffer
one quick dirty way to test if culling is the culprit is to disable opengl culling, if the model looks right with culling disable, then it is most likely the culling that is the culprit
a side note, you need to also put glEnable(GL_CULL_FACE); to enable it