Accelerating a stepper motor without it making noise
Your current code doesn't do any ramping at all. After configuring timer 1 to output a square wave at the "step" output, your code just enters an infinite loop with no exit condition (while(1){...).

void loop() {
    ...
    ICR1 = count;
    OCR1A = int(count/2);

    while(1)
    {
        if(count != 20)
        {
            count -= 10;
        }
    }
}  


Yes, the count variable does get decremented by 10 every time the while loop runs one iteration, but the timer registers which control the waveform aren't actually updated. ICR1 and OCR1A aren't pointers to data to be read, if that is what you thought.  
You don't have any delay in the step period decrement loop, so you wouldn't get a controlled speed ramp even if you did update the timer registers in said loop.
You really want to avoid using floating point arithmetic on a 8-bit microcontroller (which lacks a floating point unit). Not only can many floating point operations take milliseconds to compute, but your compiler has to include hefty floating point library functions which drastically blow up your code size. In this case floats don't even have any advantage, as you are only calculating with integers.
Testing floats (as in if(count != 20)...) for equality (or inequality) is generally a bad idea on any platform. Floating point numbers are not perfect real numbers, and suffer from e.g. limited precision and rounding errors. You might think that 10.000002 and 10.000000 are the same, but your computer will disagree. 

float a = 0.0, b = 10.0;
for(int n = 100; n &gt; 0; --n)
    a = a + 0.1;

if(a != b)
    printf("a and b are not equal!\n");
printf("a: %f, b: %f", a, b);  

//prints out:  
//a and b are not equal!
//a: 10.000002, b: 10.000000