MicroSD not able to initialize often

Try this. It disables the w5100 SPI while you are setting up the SD.

#include <SD.h>

void setup() {
  Serial.begin(9600);

  // disable w5100 SPI wile setting up SD
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);

  Serial.print("Starting SD...");
  if(!SD.begin(4)) Serial.println("failed");
  else Serial.println("ok");
}

void loop() {
}