Sahil Malik recently published a nice article that covers how to write a custom web part using ASP.NET 2.0 and host it within SharePoint 2007.
As I mentioned in an earlier blog post, SharePoint 2007 is built on top of ASP.NET 2.0, which means you can now use ASP.NET 2.0 features (Forms Authentication, Master Pages, Membership, Site Navigation, New Data Controls, etc) when building SharePoint sites. This is true for both the new Windows SharePoint Services 3.0 version (which will be a free download) as well as Microsoft Office SharePoint Server 2007 (which costs money).
One of the cool developer scenarios is the ability to create your own Web Part controls that can be used in both SharePoint sites, as well as regular vanilla ASP.NET 2.0 applications. This allows you to re-use all of the built-in SharePoint features for collaboration, document sharing, and content management - while also adding your own custom UI and behaviors (for example: if you want to integrate custom data editing and reporting to a site).
Sahil's article above describes how to create a Web Part control as a compiled custom control. You can also now build Web Parts using ASP.NET User Controls (.ascx files) -- which makes composing and encapsulating UI functionality even easier. Several people asked in follow-up comments to my previous post whether it will be possible to host Web Parts built as ASP.NET 2.0 User Controls within SharePoint 2007. I checked with the SharePoint team, and they told me that this will be a supported scenario via an additional component you add to SharePoint -- and that they'll have a whitepaper and sample on how to-do this published later this year.
This Channel9 video of the SharePoint team provides more information about some of the cool new features in SharePoint 2007 (including its new Wiki feature support). Mark Kruger also has a great list of SharePoint posts summarized here. Sahil has a number of nice posts below that talk more about some of its customization/development scenarios that you might want to check out as well:
Fritz Onion wrote a great article last month that talks about how you can use the new Asynchronous features within ASP.NET to perform efficient network calls within a Web Part control without blocking the processing request thread. This allows you to perform multiple network requests at the same time from different web parts and render the page much faster and more efficiently.
Hope this helps,