I cannot stress this enough - study all available references, and the existing code, until you understand what is happening. Do this BEFORE you begin writing a driver. This will save you a massive amount of headache. Try to find a driver for a chipset that is similar to yours, if possible. Use this as an example, and perhaps derive your driver from it.
Do not let the gloom-and-doom in the debugging section discourage you. While you will probably have problems initially (I still do), careful, deliberate debugging steps can bear fruit very quickly. It is likely that, given a good understanding of the chipset, a driver can be written and debugged in a day or two. For someone just learning about this kind of programming, a week is more reasonable.