I think you can use xlim and ylim . Also, look at the expand argument for ?biplot . Unfortunately, you did not provide any data, so let's take some sample data:
a <- princomp(USArrests)
Below is the result of just calling biplot :
biplot(a)

And now you can “zoom in” to take a closer look at “Killing” and “Rape” with xlim and ylim , and also use the expand argument of expand from ?biplot :
biplot(a, expand=10, xlim=c(-0.30, 0.0), ylim=c(-0.1, 0.1))

Note the different scaling on the top and right axis due to the expand factor.
Does this make your story male readable?
EDIT
You also asked if it is possible to have different colors for labels and arrows. biplot does not support this, what you can do is copy the code stats:::biplot.default and then change it according to your needs (change the col argument when plot , axis and text ),
Alternatively, you can use ggplot for a biplot. The message here implements a simple biplot function. You can change the code as follows:
PCbiplot <- function(PC, x="PC1", y="PC2", colors=c('black', 'black', 'red', 'red')) {
The plot is as follows:
fit <- prcomp(USArrests, scale=T) PCbiplot(fit, colors=c("black", "black", "red", "yellow"))

If you play around a bit with this function, I'm sure you can figure out how to set the values of xlim and ylim , etc.