If you are properly deleting both the row and cursor objects (e.g.
del row, rows) and the lock remains, it's likely because ArcMap itself, not arcpy, is still referencing it.
Is the shapefile referenced by a layer in the table of contents, or is it added to the TOC by your script tool?
If the latter, you might try disabling "Add results of geoprocessing operations to the display" under Geoprocessing->Geoprocessing Options in ArcMap.
An additional suggestion: If you are doing this as a temporary/intermediate dataset, and the number of features is not too large, try using the
in_memory workspace instead of a shapefile to get around the locking problem entirely and get a nice potential performance increase as well.
Just be sure to delete the in_memory workspace or the specific datasets you create there using Delete (Data Management) before exiting the script, otherwise it will continue to reside in memory until the application closes.
Lastly I would also note that shapefile locking behavior changed in 10.0 to become more strict by not removing the lock files when you remove a layer from the table of contents. See also this article and this related question.