Hall effect sensors

The first step I would do is increase the Serial from 9600 to 115200 (or the highest baud rate supported) so it uses less time.

Furthermore you should not detach the interrupt, because then you will definitely miss pulses

rewrote your code a bit, it compiles but not tested, give it a try

//
//    FILE: rpm.pde
//  AUTHOR: 
//    DATE: 20-oct-2012
//
// PUPROSE:
//

volatile unsigned long rpmcount = 0;
unsigned long previous = 0;
unsigned int rpm = 0;

unsigned long time = 0;
unsigned long timeold = 0;

void setup()
{
  Serial.begin(115200);
  attachInterrupt(0, rpm_fun, FALLING);
}

void loop()
{
  unsigned long rounds = rpmcount;
  if (rounds - previous >= 20) 
  {
    // DO THE MATH
    previous = rounds;

    time = micros();  // would millis not be fast enough?
    unsigned long duration = time - timeold;
    timeold = time;
    rpm = (rounds * 60000000UL / duration); // less rounding error if math in this order !! overflow might occur if rounds > ~70
    // DO THE OUTPUT
    // comma separated allows you to copy the output into excel
    // and make a nice graph
    Serial.print(duration);
    Serial.print(", ");
    Serial.println(rpm);
  }
}

void rpm_fun()
{
  rpmcount++;
}

Succes!