It Depends.
On some places in the application it will make sense to do an upsert because you cannot know, or don't care, if the current saved state should already contain a record. Yet on other places you'll want to know exactly and the pre-existance of a record on insert or the missing record for update should be an error.
Anyway, where you decide to do 'upsert' you have to be carefull though because of the inherent race conditions. Two separate connections may attempt to update, both see @@ROWCOUNT at 0 and then both try to insert, resulting in an primary key violation (if you're lucky) or worse in a inconsistent database state (duplicate record with different info). Getting such operations right is quite tricky. You must either ensure that the UPDATE locks in the state (ie. no other transaction can insert) or be prerared to hit a PK violation on insert and handle it accordingly. I preffer the later option, as the race conditions window is usually quite small and handling the exception is easier than preventing a concurent insert.
One avenue to consider is using the new SQL Server 2008 MERGE statement, it is designed to handle such cases (and finally catch up SQL Server with other vendors, both Oracle and MySQL been offering this functionality for years...).