One of the areas I commonly see startups underestimate is the download of non-photographic graphics. In its simplest form, download via http is trivial on all mobile platforms. However, the complexity manifests itself when you start to consider that different devices have different screen sizes and resizing graphics on the device is undesirable either because upsizing causes fuzzyness, downsizing loses small line detail in shapes and, in any case, downloading larger graphics for later reduction is extremely wasteful on both server resources and data.
Things get slightly more complex when you start to think about the server sending a particular size based on the device. The device type has to be sent to the server, the server has to keep different sizes of the same image and these images have to be created somehow, usually by a human if it’s a non-photographic graphic. What’s more, the server needs to know about all types of device and update these into the future. An additional problem on iOS is avoiding undesirably large downloads via 3G.
All these things should influence your initial design from the outset. Keep the graphic design as simple as possible. Every dynamic graphic you add will increase the complexity. Where possible, consider using scalar vector graphics rather than bitmap-based formats. Possibly have different screen layouts for different screen resolutions so you can re-use a same-size graphic in different ways. Think about which devices on which platforms you wish to support as the more you have, the greater the graphical complexity. To spice up app, consider using fixed brand-coloured buttons, list backgrounds and other controls rather than insisting on dynamic bitmaps.