dataRep is a POSIXct object so you should use as.POSIXct(), also, since this line is for annotation purposes instead of mapping a variable to an aesthetic, it is better to use annotate() function, otherwise, you would be drawing the same line 7904 times (one for each row).
#these libraries are necessary
library(readxl)
library(httr)
library(tidyverse)
#create the URL where the dataset is stored with automatic updates every day
url <- paste("https://www.ecdc.europa.eu/sites/default/files/documents/COVID-19-geographic-disbtribution-worldwide-",format(Sys.time(), "%Y-%m-%d"), ".xlsx", sep = "")
#download the dataset from the website to a local temporary file
GET(url, authenticate(":", ":", type="ntlm"), write_disk(tf <- tempfile(fileext = ".xlsx")))
#read the Dataset sheet into “R”
data <- read_excel(tf)
data %>%
filter(countriesAndTerritories %in% c("United_States_of_America", "Iran", "Italy")) %>%
arrange(countriesAndTerritories, dateRep) %>%
group_by(countriesAndTerritories) %>%
mutate(cum_cases = cumsum(cases)) %>%
filter(cum_cases >= 100) %>%
ggplot(aes(dateRep, cases, colour = countriesAndTerritories)) +
geom_point() +
scale_y_log10() +
geom_smooth() +
annotate(geom = "vline",
x = as.POSIXct("2020-03-13"),
xintercept = as.POSIXct("2020-03-13"),
linetype="dotted",
color = "blue",
size=1.5)

The same goes for geom_text() if you want to annotate your plot use annotate(geom = "text", ...)