I don't know what sort of game you're making, but I think it'd be helpful to the player if you made slight differentiations between the soldiers with different sized guns in each group - since they're so small, they might be hard to read correctly, so maybe you could provide a more obvious distinction between them.
Obvious variations you might try include:
- different hats (and heads)
- different shoes
- different arm poses
- less rectangular, more characteristic weapon shapes
- varied weapon and uniform colours
Have you tried allocating one more row of pixels to the very flat helmet and one less row to the very thick arm? They are shaded as well as the size allows, but the hands should be smaller than the face and the helmet should be somewhat round.
I'm impressed by how the gap in the outline of the current hands suggests fingers, but such good hands would fit a slightly taller character in a larger sprite: to keep them you should have a 4x4 or 4x5 head, 1-2 pixels of shoulders and torso, probably thicker and wider legs.
There is a similar disproportion between the very short legs and the very large shoes; even if you go for a deformed style, it's good to have visibly separate legs between the shoes and the crotch and shoes should be smaller and longer compared with the hands.
Are you sure you need all those black outlines? they get in the way in many places (e.g. the hat and the shoes) and they waste space. Darker shades of brown, green and blue-grey might give enough contrast between body parts but contribute details at the same time.