sure. you'll need to do a little bit more house keeping with a sprite, since it will be an actual entity, instead of a tempentity that is removed by the engine.
essentially, you just put in the standard spawning stuff in the place of the particle call:
entity guy;
guy = spawn();
setmodel(guy, "progs/guy.spr");
setorigin(guy, en1.origin);
the above will spawn a new entity with the guy sprite. now, for the house keeping:
guy.nextthink = time + 1; //some random time... whatever you want
guy.think = SUB_Remove; //remove after a while.
this will remove the sprite after 1 second.
now... i have no idea what the targeting system is, or how it works, but from your post, it looks like it just continuously spawns particles on the targetted entity.
this will probably not work well with the sprite. what you want is the sprite to spawn and stay spawned while the entity is targetted.
a simple (but wasteful) way of doing that would be to set guy.owner to en1.
then, before spawning the guy sprite, first check (again, with a nested while) if there is any entity spawned with .owner pointing to en1. if true, then bump the .nextthink a bit to avoid removing it and skip the spawning section.
edit: you'll also want to update the origin since the monster or whatever probably moved since the last time you checked.