I always done these things by checking previous record, like this:
{assign var="last" value=""}
{section name=row loop=$rows}
...
{if $last != $timeblocks[row].pc_name}
<tr bgcolor="#333333"><td colspan="6"> </td></tr>
{assign var="last" value=$timeblocks[row].pc_name} {* UPDATE LAST *}
{/if}
{/section}
However, if you want to maintain your logic, you can use index_next
section property, which gives you the next iteration index (unfortunately not the next iteration element, but no problems):
{if $timeblocks[$smarty.section.row.index_next].pc_name != $timeblocks[row].pc_name}
<tr bgcolor="#333333"><td colspan="6"> </td></tr>
{/if}