Esta bien, es muy similar a Lineage II.
Segun la imagen q pegaste, entonces, el jugador "evolucionaria" en esas imagenes segun el nivel, no es asi? 
Se me ocurre tener una funcion que verifique el nivel del usuario, y dependiendo de este nivel, que busque en la carpeta la imagen correspondiente. 
A ver si me puedo organizar: 
Digamos que cada 5 niveles, cambia la imagen.
Se podría hacer, por ejemplo mediante parametros 
nivel_clase_especializacion_otroatributo_imagen.jp  g  
En la posicion 1:
Nivel del personaje  
En la posicion 2:
1.... Merchant
2.... Thief
....... etc  
En la posicion 3, para Merchant:
a..... Blacksmith
b..... Alchemist
....... etc  
En la posicion 3, para Merchant, por ejemplo una especializacion:
1....  Novice
2....  Gran Mercader
...... etc 
La imagen de merchant level 1 es:
1_1_a_1_MERCHANT.jpg 
La imagen de merchant level 5,  y con mejora en la profesion es:
5_1_a_5_MERCHANT.jpg 
La imagen de merchant level 9,  pero alchemist gran mercader:
9_1_b_2_MERCHANT.jpg 
Y asi podes ir jugando con distintos atributos.  
Como armas esto?
Cada vez que leveleas al personaje, el mismo tiene una tabla sea de jugador o especial algo similar a esto:      
  
Y dps lo recorres cuando invocas los datos del jugador en el while de la tabla que muestra las imagenes usando un JOIN TABLE jugador_leveling (dps revisa bien la sintaxis, yo hice solo referencia)
De ahi tomas los parametros para armar el link, que seria algo asi:     
Código PHP:
Ver original- $imagen_pj = $rs_usuario['nivel']."_".$rs_usuario['clase']."_".$rs_usuario['profesion']."_".$rs_usuario['atributo1']."_MERCHANT.jpg"; 
Y listo!
Dps te queda programar y armar las imagenes usando estas coordenadas.
De todas formas, esto es una referencia. Modificala a tu gusto :) 
Saludos!