You appear to be checking for variables that aren’t set.
You set $selected
$selected = get_the_author_meta( 'user_top', $user->ID );
But then you check for something called $topselected
<select name="user_top" id="user_top">
<option value="gotguns" <?php echo ($topselected == "gotguns")? 'selected="selected"' : '' ?>>I got guns</option>
The same thing happns with $middleselected
and $bottomselected
I think your problem is nothing more than a mistake in the code.
Though WordPress has a function called selected
that would make that a little neater.