How to make a drop down menu with categories

You have to modify only the first part as this:

<ul id="nav" class="clearfloat">
<li class="cat-item"><a href="https://wordpress.stackexchange.com/questions/108006/<?php echo get_option("home'); ?>/" class="on"><?php echo get_option('blogname'); ?></a>
<ul class="children">
<?php wp_list_categories('orderby=name&title_li=');
$this_category = get_category($cat);
if (get_category_children($this_category->cat_ID) != "") {
echo "<ul>";
wp_list_categories('orderby=id&show_count=0&title_li=
&use_desc_for_title=1&child_of=".$this_category->cat_ID);
echo "</ul>";
}
?>
</ul>
</li>
<?php wp_list_pages("title_li='); ?>
</ul>

Here the menu will show up when you pass the cursor over the name of the blog that will be the first entry of the menu. If you want to show “home” and not the blog name just substitute

<?php echo get_option('blogname'); ?>

with

Home

If you want to show up not in the menu but in the logo of your blog page, just leave the menu code as the original one in wordpress, and substitute the code of the link you want to add the menu with this:

<ul id="nav" class="clearfloat">
    <li class="cat-item"><a href="https://wordpress.stackexchange.com/questions/108006/<put here the old reference of the link you are substituting>/" class="on"><put here the old content (maybe an image?, everything you found between the a>xxx<\a> tags) of the link you are substituting></a>
    <ul class="children">
    <?php wp_list_categories('orderby=name&title_li=');
    $this_category = get_category($cat);
    if (get_category_children($this_category->cat_ID) != "") {
    echo "<ul>";
    wp_list_categories('orderby=id&show_count=0&title_li=
    &use_desc_for_title=1&child_of=".$this_category->cat_ID);
    echo "</ul>";
    }
    ?>
    </ul>
    </li>
    </ul>

Hope this helps,
Marco