I didn't notice that you hadn't converted the Task MoRef to a Task object.
Try like this
$clonetaskMoRef=$_this.CloneVM_Task($folder,"myvm-clone",$spec)
$clonetask=Get-View$clonetaskMoRef
while("running","queued"-contains$$clonetask.Info.State){
Write-Host"Task state $($clonetask.Info.State) ...."
sleep1
$clonetask.UpdateViewData("Info.State")
}
Write-Host"Final task state $($clonetask.Info.State)"