After some web searching it came down to pyshp being very picky about the Shapefile format. The true cause I still do not know what was wrong. My Shapefile was created using QGIS, has valid geometries and no problems identifiable in ArcGIS or QGIS. Due to other experiences using pyshp sometimes if a field value is NULL or empty it causes some error.
ogr2ogr new_shapefile.shp original.shp
the new_shapefile.shp will work using the pyshp ShapeRecords() function.
Possible other problems that pyshp sometimes encounters:
- NULL value in field
- '' empty in field
- .dbf encoding (Latin1, UTF-8)
Anyway if you know of a cause please let me know.