Here is an example of how you can achieve this:
var marker = new google.maps.Marker({
map: MAP_INSTANCE,
position: LOCAIOTN,
visible: true,
icon: ICON_PATH
});
By using SVG icons and updating the image path to the user's image path, you can customize the markers.
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<image width="80" height="80"
xlink:href="[USER_ICON_PATH]" />
</svg>
You can also use PHP to generate different SVG images for different users.
<?php
$url = 'http://lorempixel.com/200/200/';
echo '<svg width="216" height="216">
<defs>
<rect id="rect" x="8" y="8"width="200" height="200" rx="50%"/>
<clipPath id="clip">
<use xlink:href="#rect"/>
</clipPath>
</defs>
<use xlink:href="#rect" stroke-width="8" stroke="black"/>
<image xlink:href="' . $url . '" width="100%" height="100%" clip-path="url(#clip)"/>
</svg>';
?>
If you want to see a working example, check out this JSFiddle link.
UPDATE: I have added a PHP example as well.
UPDATE: Links to JSFiddle examples have been included in the answer.