It's not programmatically, but in the 12 Hive of your server, under Template/Features/fields is a fieldswss.xml which I believe contains all of the standard SharePoint fields.
A more programmatic approach would be to iterate through the Site Columns and perform some check. For example,
List<string> retVal = new List<string>();
using (SPSite site = new SPSite("urlofsite"))
{
using (SPWeb web = site.OpenWeb())
{
List<string> spColGroups = new List<string>() { "Base Columns", "Core Contact and Calendar Columns", "Core Document Columns", "Core Task and Issue Columns", "Extended Columns" }
foreach (SPField field in web.Fields)
{
if (spColGroups.Contains(field.Group))
{
retVal.Add(field.Title);
}
}
}
}
The list retVal would then contain the names of all site columns which belong to the standard SharePoint site column groups (at least, for WSS. I don't know about MOSS). My own personal practice (I don't know if this is common but I think it is a very wise move) is to always make my own custom columns in a different group than the default SharePoint ones, so this will only get the SharePoint columns. If this is not the case for you, you'll have to devise a more useful check for your situation. I hope that, if this doesn't solve your problem, that it at least helps you get on the right track.