There is a more, um, DETAILED answer here, but it seems top-heavy to me:
I had this same problem today and found a more elegant answer, although Attachments seems to be a one-off fix. You also need to keep in mind that you can hide user-editable fields yourself, and they will appear as Hidden = true. For my case, I want to list all user-serviceable fields, including ones I had hidden from the user.
This method returns true if the field given is a user-editable field:
private bool IsValidField(SPField objField)
return (!objField.ReadOnlyField &&
objField.Type != SPFieldType.Attachments);
OK, just let me say that the code block formatting feature in this forum kicks ass. I love it.
P.S. I realize this thread is almost a year old, so I presume the OP has found his answer or, as is usually the case, a work-around. I try to provide an answer to old threads when it relates to my current dilemna, as I figure someone else is going to search for the same problem as me, and it is better to have an answer in an old thread than none at all.