In terms of having a character with "attachables", a simple yet effective system is to use named Sockets. This is the system that UDK uses for attaching particles, weapons and equipment to character models.
A "Socket" is a point on the model to which a piece of equipment can be attached. internally, a socket consists of a name (with which it can be referenced), a vertex index (indicating which vertex on the model to position it) and forward- and up-vectors (indicating the orientation of the attachment in question).
Each "Character" then, would consist of the usual model, texture and animation sets, as well as an array of sockets, and an array of attachable equipment.
When designing your character, have separate lists of attachables, sifted by which socket they apply to (separate hats from chestpieces, etc).
When rendering, it should be a simple case of render character, then iterate through the attachables and position->rotate->render each one.
Update
As DMan reminded me, a socket is usually represented as a bone if the characters are skeletally animated. This handles name, position and animation, and lets you fine-tune the 'socket' in your favourite modelling package (Lightwave for me =D ).