An error in the header is much more serious than an error in the data. A bad address, for example, could result in a packet being delivered to the wrong host. Many hosts do not check to see if a packet delivered to them is in fact really for them. They assume the network will never give them packets intended for another host. Data is sometimes not checksummed because doing so is expensive, and upper layers often do it anyway, making it redundant here.