One web part that i think is missing in the out of the box parts is one that allows you to show the sub-sites of a site.  There are a couple out there already ... but i had the need to only show sub-sites that the user had access to. 

Anyway ... here is the code:

 [DefaultProperty("Text"),
  ToolboxData("<{0}:MySubSitesWebPart runat=server></{0}:MySubSitesWebPart>"),
  XmlRoot(Namespace="MySubSites")]
 public class MySubSitesWebPart : Microsoft.SharePoint.WebPartPages.WebPart
 {
  private const string defaultText = "";
  private string text=defaultText;

  private string title = "My Sub Sites";

  [Browsable(true),Category("Miscellaneous"),
   DefaultValue(defaultText),
   WebPartStorage(Storage.Personal),
   FriendlyName("Text"),Description("Text Property")]
  public string Text
  {
   get
   {

    StringBuilder builder = new StringBuilder();

    text = "";

    SPWeb currentSite = SPControl.GetContextWeb(Context);

    SPWebCollection subSites = currentSite.GetSubwebsForCurrentUser();
    
    builder.Append(@"<table border='0' width='100%'>");
 
    foreach(SPWeb site in subSites)
    {
     builder.Append("<tr><td class='ms-underlineback'>");
     builder.Append("<a href='");
     builder.Append(site.Url);
     builder.Append("' style='cursor:hand' title=''>");
     builder.Append(SPEncode.HtmlEncode(site.Title));
     builder.Append(@"</a></td></tr>");
    }

    builder.Append(@"</table>");

    return builder.ToString();
   }

   set
   {
    text = value;
   }
  }
  
  
  /// <summary> 
  /// Render this Web Part to the output parameter specified.
  /// </summary>
  /// <param name="output"> The HTML writer to write out to </param>
  protected override void RenderWebPart(HtmlTextWriter output)
  {
   output.Write(Text);
  }
 }