How to Sort product list by custom attribute in Magento?

Please open \app\design\frontend\default\<your theme name>\template\catalog\product\ toolbar.phtml Line number may be 63.

just replace with below code :

<fieldset>
<?php //$this->_availableOrder = array(‘name’=>__(‘Alphabetical’), ‘price’=>__(‘Price’)); ?>
<label><?php echo $this->__(‘Sort by’) ?></label>
<select onchange=”setLocation(this.value)”>
<option value=”<?php echo $this->getOrderUrl(‘featured’, ‘asc’) ?>”<?php if($this->isOrderCurrent(‘featured’) && $this->getCurrentDirection() == ‘asc’): ?> selected=”selected”<?php endif; ?>>Featured </option>
<option value=”<?php echo $this->getOrderUrl(‘sku’, ‘asc’) ?>”<?php if($this->isOrderCurrent(‘sku’) && $this->getCurrentDirection() == ‘asc’): ?> selected=”selected”<?php endif; ?>> SKU – Low to High </option>
<option value=”<?php echo $this->getOrderUrl(‘sku’, ‘desc’) ?>”<?php if($this->isOrderCurrent(‘sku’) && $this->getCurrentDirection() == ‘desc’): ?> selected=”selected”<?php endif; ?>> SKU – High to Low </option>
<option value=”<?php echo $this->getOrderUrl(‘name’, ‘asc’) ?>”<?php if($this->isOrderCurrent(‘name’) && $this->getCurrentDirection() == ‘asc’): ?> selected=”selected”<?php endif; ?>> Name- A to Z </option>
<option value=”<?php echo $this->getOrderUrl(‘Name’, ‘desc’) ?>”<?php if($this->isOrderCurrent(‘name’) && $this->getCurrentDirection() == ‘desc’): ?> selected=”selected”<?php endif; ?>> Name- Z to A </option>
</select>
</fieldset>

Hope so it will help you.