This may not be the most elegant solution, but it should work and is hopefully understandable:
We split the data into two dataframes: one with the 'from' longitude and latitude data (call it testF) and the other with the 'to' data (call it test). We then use rbind to insert the rows of 'testF' in the appropriate places in 'test'.
test <- data.frame(dis = c(10,20,30,40),dur=c(30,40,60,90),method=c("car","car","Bicycle","Bicycle"),to_lon=c(-1.980,-1.5678,-1.324,-1.456),to_lat=c(55.3009,55.3416,55.1123,55.2234),from_lon=c(-1.4565,-1.3424,-1.4566,-1.1111),from_lat=c(76.8888,65.8999,76.9088,25.3344))
testF <- test[,c(1:3,6,7)]
names(testF)[4:5] <- c("lonitude", "latitude")
test <- test[,1:5]
names(test)[4:5] <- c("lonitude", "latitude")
for(i in dim(test)[1]:1) {
test <- rbind(test[1:i,], testF[i,], test[-(1:i),])
}