Earlier tonight, I compared the same picture on the same site using 3 different computer monitors side by side and 3 different tablet screens.
To me, the white/blue part of the dress is sort of a pale light blue on all 6 screens. But they're different shades of pale blue. On one screen, the blue stand outs a little stronger. On another screen, the blue seems more faded towards white.
For the black/gold/tan part of the dress, on some screens, the tan color seems more faded, making the darker part stronger, and I COULD call it black. I know it's not PURE black, and it's not as black as that cow patch thing in to the left of the dress. But I could call it a shade of black. On other screens, the tan part stands out more, and I would definitely not call that part black. I don't know if I would call it "gold", but I would call it tan/light brownish.
So I think the screen settings is one variable that contributes to what colors the user thinks they see in the dress picture.
For the situations where different people are looking at the same screen or printed photograph, my guess is that the variability comes from the color/brightness/etc sensitivity of their eyes. For example, in my own eyes, one of them sees the wall in a brighter shade of white (and possibly slightly red tinted) than the other eye. Perhaps those who aren't as sensitive to blue might see the blue/white part of the dress as a shade of white, and call it white.
I guess this picture is just one of those freak pictures where the colors are at some borderline that could be interpreted as one shade of color or another.