Just have a separate shield 'controller', or use Link and put code similar to the following in the Draw event:
{
if (global.facingvariable="u") { draw_sprite(spr_shield_up,-1,x+4,y+4); }
if (global.facingvariable="l") { draw_sprite(spr_shield_left,-1,x-2,y+2); }
if (global.facingvariable="d") { draw_sprite(spr_shield_down,-1,x+4,y+16); }
if (global.facingvariable="r") { draw_sprite(spr_shield_right,-1,x+2,y+2); }
}
OF course, this is just an example. You'd have to mess around with the x and y offsets.