I just used follwing script to change content type files in a document library but it seems that it works only on old files. the files must be created some time before you run the script. It is even not possible to change the content type by using GUI even I am Farm Admin.
I think you can change content type if you have files in the list have created earlier than 48 hours or something. Here is the script, no errors or problem with the script
$listItem.File.CheckOut()
$listItem["ContentTypeId"] = $MyCTID
$listItem.Update()
$listItem.File.CheckIn("Content type changed to " + $MyCT.Name, 1)
I have tested with/without SystemUpdate() and with/without checkout checkin.