In SharePoint 2003 there was no easy way to use impersonation. In SharePoint 2007 there is a nice and easy build in way to use impersonation:
SPSite site = new SPSite("SiteCollection_Url");
SPWeb web = site.OpenWeb();
SPUser user = web.AllUsers["User_Name"];
SPUserToken token = user.UserToken;
SPSite impersonatedSiteCollection = new SPSite("SiteCollection_Url", token);
You can also check whether an SPSite object isĀ using impersonation:
SPSite siteCollection = SPControl.GetContextSite(HttpContext.Current);
bool impersonating = siteCollection.Impersonating;