To add to Steve's comment, there is more overhead than just the dataype overhead on a row. On top of the overhead by VARCHAR and NVARCHAR, you also have the row header, null block, etc.
A good read on that is available here:
If you need the min, max, and average,
DBCC SHOWCONTIG('<table name>') WITH SHOW TABLERESULTS
will give you that.
If you need an estimate on row sizes, you can use DATALENGTH(<column name>) and sum up that value for every column. You'll be missing the overhead (both datatype and the SQL magic stuff), but will give you a rough estimate. Did that on a 3 column table I had and the table had 11 bytes of overhead. I figured this out by using the DATALENGTH calculation I suggested, grabbed the smallest value and compared that to the MIN value of the SHOWCONTIG command. Probably not 100% accurate, but got me a value that worked for getting the max value that matched up with the SHOWCONTIG results.
Would be a huge pain in the behind to make this work for all tables, but if you are only working with a single table, it gives you a rough idea...