use Pikachu2000's suggestion instead.
In you original code you had SQL error, plus in your PHP you had typo error...
Where is the error message in your question?
<select name="cat">
<?php
$selectleadpr = "SELECT * FROM category where userid = " . $_SESSION['userid'] . " ORDER BY " . $_SESSION['leadProductCategory'];
$default = isset($_POST['cat'])?$_POST['cat']:'';
while ($row = mysql_fetch_assoc($selectleadpr)) {
$selected = $default == $row['catname']?' selected="selected"':'';
echo '<option value="' . $row['catname'] . '" ' . $selected . '>' . $row['catname'] . '</option>';
}
?></select>
with mysql_fetch_array you'r wasting your servers resources, because its retrieving associated and numerical indexes in your $row array, where numerical indexes are redundant.
You should use shorter variable names, and boycott uppercase variable names which is growing the chance to make misspells.