Extract all Greek letters from the documentation and make replacement rules:
nb = Get @ FileNameJoin[{$InstallationDirectory, "Documentation", "English", "System",
"Tutorials", "LettersAndLetterLikeForms.nb"}];
letters = Cases[nb, StyleBox[s_String, "TR"] :> s, {-2}];
letters = DeleteCases[letters, "π" | "∈"]; (* reserved Symbols *)
names = StringTake[ToString @ FullForm @ #, {4, -3}] & /@ letters;
rules = MapThread[Symbol@# -> Symbol@ToLowerCase@#2 &, {letters, names}];
Then simply:
α x + β y /. rules
alpha x + beta y
If any of the Symbols may already have assignments and you are working with held expressions use instead:
rulesHeld = MapThread[HoldPattern @@ MakeExpression@# :>
Evaluate[Unevaluated @@ MakeExpression@ToLowerCase@#2] &, {letters, names}];
In a comment Oleksandr posted an undocumented System function which could be used as follows:
names = Join @@ System`Private`NameCodeLookup @ ToCharacterCode @ letters;
Complete replacement rules in case anything goes wrong with the extraction:
{α->alpha, ρ->rho, Ε->capitalepsilon, Ψ->capitalpsi
β->beta, ϱ->curlyrho, Ζ->capitalzeta, Ω->capitalomega
γ->gamma, σ->sigma, Η->capitaleta, Ϝ->capitaldigamma
δ->delta, ς->finalsigma, Θ->capitaltheta, Ϟ->capitalkoppa
ϵ->epsilon, τ->tau, Ι->capitaliota, Ϛ->capitalstigma
ε->curlyepsilon, υ->upsilon, Κ->capitalkappa, Ϡ->capitalsampi
ζ->zeta, ϕ->phi, Λ->capitallambda, Σ->capitalsigma
η->eta, φ->curlyphi, Μ->capitalmu, Π->capitalpi
θ->theta, χ->chi, Ν->capitalnu, ϵ->epsilon
ϑ->curlytheta, ψ->psi, Ξ->capitalxi, μ->mu
ι->iota, ω->omega, Ο->capitalomicron, Υ->capitalupsilon
κ->kappa, ϝ->digamma, Π->capitalpi, ς->finalsigma
ϰ->curlykappa, ϟ->koppa, Ρ->capitalrho, ϝ->digamma
λ->lambda, ϛ->stigma, Σ->capitalsigma, ϟ->koppa
μ->mu, ϡ->sampi, Τ->capitaltau, ϛ->stigma
ν->nu, Α->capitalalpha, Υ->capitalupsilon, ϡ->sampi
ξ->xi, Β->capitalbeta, ϒ->curlycapitalupsilon,
ο->omicron, Γ->capitalgamma, Φ->capitalphi,
ϖ->curlypi, Δ->capitaldelta, Χ->capitalchi}
(Sorry for the formatting; I can't think of a nice way to paste this here.)