I think this was a good and thorough article on SCD's.
One thing of note if you get the highest key value and manually set surrogates versus using identity columns then you cannot load a dimension in parallel.
Also be wary of using the checksum to determine record changes, it is possible, however unlikely, that two different records could produce the same checksum. Here is a quote from BOL:
"CHECKSUM satisfies the properties of a hash function: CHECKSUM applied over any two lists of expressions returns the same value if the corresponding elements of the two lists have the same type and are equal when compared using the equals (=) operator. For the purpose of this definition, NULL values of a given type are considered to compare as equal. If one of the values in the expression list changes, the checksum of the list also usually changes. However, there is a small chance that the checksum will not change."
GUID's may be great in that you don't need to worry about uniqueness, but there are a couple of reasons not to use GUID's as surrogates. One is that they are 4 times larger then an integer. May not sound like a big deal but when you are dealing with potentially hundreds of millions of records with an expectation of sub-second response time on reports, every little bit helps. Also you may want to create clustered indexes on the surrogate in the fact tables. Since GUID's are not sequential, at least in not in SQL2K, then you will quickly fragment your fact tables.