We don't use any GUI elements, Unity's GUI stuff is horribly slow and it's mostly built around using weird side-effect-style code to manage it. It might be better in 4, but we haven't switch away from 3.7 yet.
In-game we just use textured quads for all our sprites. Transparency ordering is done via z depth. The stuff that we found hard was generating geometry on the fly and navigating Unity's texture/material system. Once we figured that out it's quite simple to use