Here is how I have done this:
First you need to have a single DLL for the binaries of the ASP.NET site otherwise it is an interminable faff to get everything configured.
The easiest way is if you have a web application project. If you have a "web site" project you can either convert it as described on MSDN (http://msdn.microsoft.com/en-us/library/aa983476.aspx) which is what I do, or there is also a web deployment project add-in (http://weblogs.asp.net/scottgu/archive/2008/01/28/vs-2008-web-deployment-project-support-released.aspx) to get a single DLL although I have not tried this. Make sure you strong name the assembly so it can be deployed to the GAC.
1) Create the web application and web site collection in the usual way, using the "Blank Site" template. If you are using Forms authentication you will need to extend it to a Windows authentication site also for the next step.
2) Open the root site of the new site collection in SharePoint Designer (no, seriously).
3) From the menu, File->Import->Import Site Wizard, select File System and browse to your web application or web site project, and open it (check "Include Subsites"), Next, Finish.
4) From the side-by-side import view in SharePoint Designer, select your .aspx and .ascx files and copy them into your SharePoint site (right click and select "Publish Select Files"). Also copy across any static content files, images, etc. and your master page for reference. Don't copy across any code-behind files.
5) In SharePoint Designer, modify the default master page in the master page gallery to reproduce your old ASP.NET master page (but include the minimal.master placeholders so that it will work with a vanilla SharePoint page also).
6) Still in SharePoint Designer, for each of your .aspx pages, use the menu Format->Master Page->Attach Master Page and choose the default master page. You can also re-map the content placeholders if necessary.
7) Copy the DLL for your ASP.NET project to the bin folder of the web site root directory (e.g. C:\Inetpub\wwwroot\wss\VirtualDirectories\MySharePointWebApplication\bin). It can also be deployed to the GAC which will allow them to run with full trust. If your application depends on other DLLs copy these also.
8) Modify web.config in the web site root to add a SafeControl element for the ASP,NET application DLL, and any other DLLs you have copied, e.g. <SafeControl Assembly="WebApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d7bb9cf4fbfef0d6" Namespace="WebApplication1" TypeName="*" Safe="True" AllowRemoteDesigner="True" />
.
9) Add a PageParser exception for the root of your site: <PageParserPath VirtualPath="/*" CompilationMode="Auto" AllowServerSideScript="true" IncludeSubFolders="true"/>
.
10) If you have user controls you will also need to add the directory to SafeControls, e.g. if you have .ascx files in the root add <SafeControl Src="~/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" />
to your web.config.
Note that the last few steps weaken the security model of SharePoint, and so it should only be an interim solution. Even then you may need to modify some of your code-behind to use SPSecurity.RunWithElevatedPrivileges for it to work within the context of a SharePoint application. If a longer term solution is required the dynamic pages, or parts of them, can be embedded in SharePoint pages as user controls or web parts.