No socket or UDP support is probably the biggest pain for me followed by the missing crypto classes.
In addition the missing classed like StringDictionary and ApplicationException that you get used to and then find aren't around are a pain. Generally it's possible to find a substitute or workaround but personally I'd rather the Silverlight download go from 5MB to 6MB so we didn't have to ;-).
One really handy trick I saw on a blog that allowed me to reuse my normal .Net assemblies was to add existing items as a link. In a number of cases now I have two project files using the same class files with one targetting .Net 3.5 and the other the Silverlight runtime. I'm extremely thankful I found that trick as I was already starting to go down the path of creating different code bases for .Net 3.5 and Silverlight!