I am guessing that you are using the default table headers with some transparency / translucency (similar to the contacts app) and so the bottom of the first row shows through there.
Have a look at the documentation for UITableViewDelegate method tableView:viewForHeaderInSection, and then you can implement that method in your tableView's delegate. Send it a view with a non-translucent (or transparent) background, and it should prevent the top row from showing through.
To get started, I'd have it return a custom-sized UILabel directly with a solid white background and make sure it works as it should (because I haven't tested this:)
// you'd probably need to fill in the frame sizes yourself
// so try something other than CGRectZero at first.
// for example (10,2,320,30) to start, then go from there
#define X 10
#define Y 2
#define WIDTH 320
#define HEIGHT 30
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
UILabel *sectionHeader = [[UILabel alloc] initWithFrame:CGRectMake(X,Y,WIDTH,HEIGHT)];
sectionHeader.text = [NSString stringWithFormat:@"Section %d",section];
sectionHeader.background = [UIColor whiteColor];
return [sectionHeader autorelease];
}
Assuming that works and looks like progress, you'll probably want to compose a custom view return that as a next step.